1
0
mirror of https://github.com/jhillyerd/inbucket.git synced 2025-12-17 09:37:02 +00:00

config: Use log level name DEBUG instead of TRACE

Add log level parsing into openLog() for #90
This commit is contained in:
James Hillyerd
2018-03-31 15:30:36 -07:00
parent deceb29377
commit 5a28e9f9e7
3 changed files with 24 additions and 12 deletions

View File

@@ -11,6 +11,7 @@ import (
"os" "os"
"os/signal" "os/signal"
"runtime" "runtime"
"strings"
"syscall" "syscall"
"time" "time"
@@ -73,13 +74,6 @@ func main() {
config.Usage() config.Usage()
return return
} }
// Logger setup.
closeLog, err := openLog(*logfile, *logjson)
if err != nil {
fmt.Fprintf(os.Stderr, "Log error: %v\n", err)
os.Exit(1)
}
startupLog := log.With().Str("phase", "startup").Logger()
// Process configuration. // Process configuration.
config.Version = version config.Version = version
config.BuildDate = date config.BuildDate = date
@@ -92,6 +86,13 @@ func main() {
conf.POP3.Debug = true conf.POP3.Debug = true
conf.SMTP.Debug = true conf.SMTP.Debug = true
} }
// Logger setup.
closeLog, err := openLog(conf.LogLevel, *logfile, *logjson)
if err != nil {
fmt.Fprintf(os.Stderr, "Log error: %v\n", err)
os.Exit(1)
}
startupLog := log.With().Str("phase", "startup").Logger()
// Setup signal handler. // Setup signal handler.
sigChan := make(chan os.Signal, 1) sigChan := make(chan os.Signal, 1)
signal.Notify(sigChan, syscall.SIGTERM, syscall.SIGINT) signal.Notify(sigChan, syscall.SIGTERM, syscall.SIGINT)
@@ -166,9 +167,20 @@ signalLoop:
} }
// openLog configures zerolog output, returns func to close logfile. // openLog configures zerolog output, returns func to close logfile.
func openLog(logfile string, json bool) (close func(), err error) { func openLog(level string, logfile string, json bool) (close func(), err error) {
switch strings.ToUpper(level) {
case "DEBUG":
zerolog.SetGlobalLevel(zerolog.DebugLevel)
case "INFO":
zerolog.SetGlobalLevel(zerolog.InfoLevel)
case "WARN":
zerolog.SetGlobalLevel(zerolog.WarnLevel)
case "ERROR":
zerolog.SetGlobalLevel(zerolog.ErrorLevel)
default:
return nil, fmt.Errorf("Log level %q not one of: DEBUG, INFO, WARN, ERROR", level)
}
close = func() {} close = func() {}
zerolog.SetGlobalLevel(zerolog.DebugLevel)
var w io.Writer var w io.Writer
color := true color := true
switch logfile { switch logfile {

View File

@@ -8,7 +8,7 @@ Running `inbucket -help` will yield a condensed summary of the environment
variables it supports: variables it supports:
KEY DEFAULT DESCRIPTION KEY DEFAULT DESCRIPTION
INBUCKET_LOGLEVEL INFO TRACE, INFO, WARN, or ERROR INBUCKET_LOGLEVEL INFO DEBUG, INFO, WARN, or ERROR
INBUCKET_SMTP_ADDR 0.0.0.0:2500 SMTP server IP4 host:port INBUCKET_SMTP_ADDR 0.0.0.0:2500 SMTP server IP4 host:port
INBUCKET_SMTP_DOMAIN inbucket HELO domain INBUCKET_SMTP_DOMAIN inbucket HELO domain
INBUCKET_SMTP_DOMAINNOSTORE Load testing domain INBUCKET_SMTP_DOMAINNOSTORE Load testing domain
@@ -47,7 +47,7 @@ should probably select INFO, but a busy shared installation would be better off
with WARN or ERROR. with WARN or ERROR.
- Default: `INFO` - Default: `INFO`
- Values: one of `TRACE`, `INFO`, `WARN`, or `ERROR` - Values: one of `DEBUG`, `INFO`, `WARN`, or `ERROR`
## SMTP ## SMTP

View File

@@ -29,7 +29,7 @@ var (
// Root wraps all other configurations. // Root wraps all other configurations.
type Root struct { type Root struct {
LogLevel string `required:"true" default:"INFO" desc:"TRACE, INFO, WARN, or ERROR"` LogLevel string `required:"true" default:"INFO" desc:"DEBUG, INFO, WARN, or ERROR"`
SMTP SMTP SMTP SMTP
POP3 POP3 POP3 POP3
Web Web Web Web