Improve logging handling #57
@ -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")
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user