Skip to content

Commit

Permalink
Add --quiet=all option
Browse files Browse the repository at this point in the history
  • Loading branch information
csstaub committed Mar 7, 2019
1 parent 5ef0634 commit 94ae8b1
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 5 deletions.
20 changes: 17 additions & 3 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import (
"crypto/tls"
"errors"
"fmt"
"io/ioutil"
"log"
"net"
"net/http"
Expand Down Expand Up @@ -112,7 +113,7 @@ var (
// Status & logging
statusAddress = app.Flag("status", "Enable serving /_status and /_metrics on given HOST:PORT (or unix:SOCKET).").PlaceHolder("ADDR").String()
enableProf = app.Flag("enable-pprof", "Enable serving /debug/pprof endpoints alongside /_status (for profiling).").Bool()
quiet = app.Flag("quiet", "Silence selected log messages (can be 'conns', 'conn-errs' and 'handshake-errs')").Default("").Enums("", "conns", "handshake-errs", "conn-errs")
quiet = app.Flag("quiet", "Silence log messages (can be all, conns, conn-errs, handshake-errs; repeat flag for more than one)").Default("").Enums("", "all", "conns", "handshake-errs", "conn-errs")
)

func init() {
Expand Down Expand Up @@ -157,10 +158,17 @@ type Dialer interface {
// Global logger instance
var logger = log.New(os.Stderr, "", log.LstdFlags|log.Lmicroseconds)

func initLogger(syslog bool) (err error) {
func initLogger(syslog bool, flags []string) (err error) {
// If user has indicated request for syslog, override default stderr
// logger with a syslog one instead. This can fail, e.g. in containers
// that don't have syslog available.
for _, flag := range flags {
if flag == "all" {
// If --quiet=all if passed, disable all logging
logger = log.New(ioutil.Discard, "", 0)
return
}
}
if syslog {
var syslogWriter gsyslog.Syslogger
syslogWriter, err = gsyslog.NewLogger(gsyslog.LOG_INFO, "DAEMON", "")
Expand Down Expand Up @@ -298,7 +306,7 @@ func run(args []string) error {
command := kingpin.MustParse(app.Parse(args))

// Logger
err := initLogger(useSyslog())
err := initLogger(useSyslog(), *quiet)
if err != nil {
fmt.Fprintf(os.Stderr, "error initializing logger: %s\n", err)
os.Exit(1)
Expand Down Expand Up @@ -681,11 +689,17 @@ func proxyLoggerFlags(flags []string) int {
out := proxy.LogEverything
for _, flag := range flags {
switch flag {
case "all":
// Disable all proxy logs
out = 0
case "conns":
// Disable connection logs
out = out & ^proxy.LogConnections
case "conn-errs":
// Disable connection errors logs
out = out & ^proxy.LogConnectionErrors
case "handshake-errs":
// Disable handshake error logs
out = out & ^proxy.LogHandshakeErrors
}
}
Expand Down
12 changes: 11 additions & 1 deletion main_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,9 +82,19 @@ func TestIntegrationMain(t *testing.T) {
}
}

func TestInitLoggerQuiet(t *testing.T) {
originalLogger := logger
err := initLogger(false, []string{"all"})
assert.Nil(t, err)

updatedLogger := logger
assert.NotEqual(t, originalLogger, updatedLogger, "should have updated logger object")
assert.NotNil(t, logger, "logger should never be nil after init")
}

func TestInitLoggerSyslog(t *testing.T) {
originalLogger := logger
err := initLogger(true)
err := initLogger(true, []string{})
updatedLogger := logger
if err != nil {
// Tests running in containers often don't have access to syslog,
Expand Down
2 changes: 1 addition & 1 deletion proxy/proxy.go
Original file line number Diff line number Diff line change
Expand Up @@ -243,8 +243,8 @@ func (p *Proxy) fuse(client, backend net.Conn) {

// Copy data between two connections
func (p *Proxy) copyData(dst net.Conn, src net.Conn) {
defer src.Close()
defer dst.Close()
defer src.Close()

_, err := io.Copy(dst, src)

Expand Down

0 comments on commit 94ae8b1

Please sign in to comment.