Properly init standard and error logging
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
kolaente 2019-01-24 10:36:52 +01:00
parent 6df1805f21
commit 972e7b6243
Signed by: konrad
GPG Key ID: F40E70337AB24C9B
2 changed files with 24 additions and 46 deletions

View File

@ -80,9 +80,9 @@ func init() {
viper.SetDefault("log.enabled", true) viper.SetDefault("log.enabled", true)
viper.SetDefault("log.errors", "stdout") viper.SetDefault("log.errors", "stdout")
viper.SetDefault("log.standard", "stdout") viper.SetDefault("log.standard", "stdout")
viper.SetDefault("log.database", false) viper.SetDefault("log.database", "off")
viper.SetDefault("log.http", true) viper.SetDefault("log.http", "stdout")
viper.SetDefault("log.echo", false) // Echo has its own logging which usually is unnessecary. viper.SetDefault("log.echo", "off")
viper.SetDefault("log.path", viper.GetString("service.rootpath")+"/logs") viper.SetDefault("log.path", viper.GetString("service.rootpath")+"/logs")
// Init checking for environment variables // Init checking for environment variables

View File

@ -53,47 +53,42 @@ func InitLogger() {
// TODO: work out how to set up the other log stuff // TODO: work out how to set up the other log stuff
// TODO: Docs for new config options // TODO: Docs for new config options
var logBackends []logging.Backend
// We define our two backends // We define our two backends
stdWriter, _ := GetLogWriter() if viper.GetString("log.standard") != "off" {
/*defer func() { stdWriter := GetLogWriter("standard")
if err := stdfile.Close(); err != nil { stdBackend := logging.NewLogBackend(stdWriter, "", 0)
log.Fatal(err)
}
}()*/
errWriter, _ := GetErrorLogWriter() // Set the standard backend
/*defer func() { logBackends = append(logBackends, logging.NewBackendFormatter(stdBackend, logging.MustStringFormatter(Fmt+"\n")))
if err := errFile.Close(); err != nil { }
log.Fatal(err)
}
}()*/
errBackend := logging.NewLogBackend(errWriter, "", 0)
stdBackend := logging.NewLogBackend(stdWriter, "", 0)
// Set the standard backend if viper.GetString("log.error") != "off" {
stdBackendFormatter := logging.NewBackendFormatter(stdBackend, logging.MustStringFormatter(Fmt+"\n")) errWriter := GetLogWriter("error")
errBackend := logging.NewLogBackend(errWriter, "", 0)
// Only warnings and more severe messages should go to the error backend // Only warnings and more severe messages should go to the error backend
errBackendLeveled := logging.AddModuleLevel(errBackend) errBackendLeveled := logging.AddModuleLevel(errBackend)
errBackendLeveled.SetLevel(logging.WARNING, "") errBackendLeveled.SetLevel(logging.WARNING, "")
logBackends = append(logBackends, errBackendLeveled)
}
// TODO: make a setting to define where logging should go (file, stdout) // TODO: make a setting to define where logging should go (file, stdout)
// Set our backends // Set our backends
logging.SetBackend(stdBackendFormatter, errBackendLeveled) logging.SetBackend(logBackends...)
} }
// TODO: Refactor these bot functions (it probably isn't needed to return the file shit)
// GetLogWriter returns the writer to where the normal log goes, depending on the config // GetLogWriter returns the writer to where the normal log goes, depending on the config
func GetLogWriter() (writer io.Writer, logfile *os.File) { func GetLogWriter(logfile string) (writer io.Writer) {
switch viper.GetString("log.standard") { switch viper.GetString("log." + logfile) {
case "file": case "file":
logfile, err := os.OpenFile(viper.GetString("log.path")+"/standard.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) f, err := os.OpenFile(viper.GetString("log.path")+"/"+logfile+".log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
} }
writer = logfile writer = f
break break
case "stdout": case "stdout":
default: default:
@ -101,20 +96,3 @@ func GetLogWriter() (writer io.Writer, logfile *os.File) {
} }
return return
} }
// GetErrorLogWriter returns the writer to where the error log goes, depending on the config
func GetErrorLogWriter() (writer io.Writer, logfile *os.File) {
switch viper.GetString("log.error") {
case "file":
logfile, err := os.OpenFile(viper.GetString("log.path")+"/error.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
if err != nil {
log.Fatal(err)
}
writer = logfile
break
case "stdout":
default:
writer = os.Stderr
}
return
}