Improve logging handling #57

Merged
konrad merged 14 commits from fix-logging-chaos into master 2019-01-25 11:40:54 +00:00
3 changed files with 48 additions and 4 deletions
Showing only changes of commit 80f7b884b6 - Show all commits

View File

@ -56,7 +56,6 @@ func init() {
viper.SetDefault("database.password", "")
viper.SetDefault("database.database", "vikunja")
viper.SetDefault("database.path", "./vikunja.db")
viper.SetDefault("database.showqueries", false)
viper.SetDefault("database.openconnections", 100)
// Cacher
viper.SetDefault("cache.enabled", false)
@ -77,6 +76,12 @@ func init() {
viper.SetDefault("redis.host", "localhost:6379")
viper.SetDefault("redis.password", "")
viper.SetDefault("redis.db", 0)
// Logger
viper.SetDefault("log.enabled", true)
viper.SetDefault("log.errors", "stdout")
viper.SetDefault("log.standard", "stdout")
viper.SetDefault("log.database", false)
viper.SetDefault("log.http", true)
// Init checking for environment variables
viper.SetEnvPrefix("vikunja")

View File

@ -18,6 +18,9 @@ package log
import (
"github.com/op/go-logging"
"github.com/spf13/viper"
"io"
"log"
"os"
"time"
)
@ -36,9 +39,13 @@ var Log = logging.MustGetLogger("vikunja")
// Initializes the global log handler
func init() {
if !viper.GetBool("log.enabled") {
return
}
// We define our two backends
errBackend := logging.NewLogBackend(os.Stderr, "", 0)
stdBackend := logging.NewLogBackend(os.Stdout, "", 0)
errBackend := logging.NewLogBackend(GetErrorLogWriter(), "", 0)
stdBackend := logging.NewLogBackend(GetLogWriter(), "", 0)
// Set the standard backend
stdBackendFormatter := logging.NewBackendFormatter(stdBackend, logging.MustStringFormatter(Fmt+"\n"))
@ -52,3 +59,35 @@ func init() {
// Set our backends
logging.SetBackend(stdBackendFormatter, errBackendLeveled)
}
// GetLogWriter returns the writer to where the normal log goes, depending on the config
func GetLogWriter() (writer io.Writer) {
switch viper.GetString("log.standard") {
case "file":
f, err := os.OpenFile("access.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
if err != nil {
log.Fatal(err)
}
writer = f
defer func() {
if err := f.Close(); err != nil {
log.Fatal(err)
}
}()
case "stdout":
default:
writer = os.Stdout
}
return
}
// GetErrorLogWriter returns the writer to where the error log goes, depending on the config
func GetErrorLogWriter() (writer io.Writer) {
switch viper.GetString("log.error") {
case "file":
case "stdout":
default:
writer = os.Stderr
}
return
}

View File

@ -123,7 +123,7 @@ func SetEngine() (err error) {
return fmt.Errorf("sync database struct error: %v", err)
}
x.ShowSQL(viper.GetBool("database.showqueries"))
x.ShowSQL(viper.GetBool("log.database"))
return nil
}