Improve logging handling #57
3
.gitignore
vendored
3
.gitignore
vendored
@ -12,4 +12,5 @@ Test_*
|
||||
bin/
|
||||
secrets
|
||||
*.deb
|
||||
debian/
|
||||
debian/
|
||||
logs/
|
3
main.go
3
main.go
@ -35,6 +35,9 @@ var Version = "0.1"
|
||||
|
||||
func main() {
|
||||
|
||||
// Set logger
|
||||
log.InitLogger()
|
||||
|
||||
// Set Engine
|
||||
err := models.SetEngine()
|
||||
if err != nil {
|
||||
|
@ -82,6 +82,8 @@ func init() {
|
||||
viper.SetDefault("log.standard", "stdout")
|
||||
viper.SetDefault("log.database", false)
|
||||
viper.SetDefault("log.http", true)
|
||||
viper.SetDefault("log.echo", false) // Echo has its own logging which usually is unnessecary.
|
||||
viper.SetDefault("log.path", viper.GetString("service.rootpath")+"/logs")
|
||||
|
||||
// Init checking for environment variables
|
||||
viper.SetEnvPrefix("vikunja")
|
||||
|
@ -37,15 +37,38 @@ const Fmt = `%{color}%{time:` + time.RFC3339Nano + `}: %{level}` + "\t" + `▶ %
|
||||
// Log is the handler for the logger
|
||||
var Log = logging.MustGetLogger("vikunja")
|
||||
|
||||
// Initializes the global log handler
|
||||
func init() {
|
||||
// InitLogger initializes the global log handler
|
||||
func InitLogger() {
|
||||
if !viper.GetBool("log.enabled") {
|
||||
return
|
||||
}
|
||||
|
||||
if viper.GetString("log.errors") == "file" || viper.GetString("log.standard") == "file" {
|
||||
err := os.Mkdir(viper.GetString("log.path"), 0744)
|
||||
if err != nil && !os.IsExist(err) {
|
||||
log.Fatal("Could not create log folder: ", err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: work out how to set up the other log stuff
|
||||
// TODO: Docs for new config options
|
||||
|
||||
// We define our two backends
|
||||
errBackend := logging.NewLogBackend(GetErrorLogWriter(), "", 0)
|
||||
stdBackend := logging.NewLogBackend(GetLogWriter(), "", 0)
|
||||
stdWriter, _ := GetLogWriter()
|
||||
/*defer func() {
|
||||
if err := stdfile.Close(); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}()*/
|
||||
|
||||
errWriter, _ := GetErrorLogWriter()
|
||||
/*defer func() {
|
||||
if err := errFile.Close(); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}()*/
|
||||
errBackend := logging.NewLogBackend(errWriter, "", 0)
|
||||
stdBackend := logging.NewLogBackend(stdWriter, "", 0)
|
||||
|
||||
// Set the standard backend
|
||||
stdBackendFormatter := logging.NewBackendFormatter(stdBackend, logging.MustStringFormatter(Fmt+"\n"))
|
||||
@ -60,20 +83,18 @@ func init() {
|
||||
logging.SetBackend(stdBackendFormatter, errBackendLeveled)
|
||||
}
|
||||
|
||||
// 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
|
||||
func GetLogWriter() (writer io.Writer) {
|
||||
func GetLogWriter() (writer io.Writer, logfile *os.File) {
|
||||
switch viper.GetString("log.standard") {
|
||||
case "file":
|
||||
f, err := os.OpenFile("access.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
|
||||
logfile, err := os.OpenFile(viper.GetString("log.path")+"/standard.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)
|
||||
}
|
||||
}()
|
||||
writer = logfile
|
||||
break
|
||||
case "stdout":
|
||||
default:
|
||||
writer = os.Stdout
|
||||
@ -82,9 +103,15 @@ func GetLogWriter() (writer io.Writer) {
|
||||
}
|
||||
|
||||
// GetErrorLogWriter returns the writer to where the error log goes, depending on the config
|
||||
func GetErrorLogWriter() (writer io.Writer) {
|
||||
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
|
||||
|
@ -86,7 +86,10 @@ func NewEcho() *echo.Echo {
|
||||
e.HideBanner = true
|
||||
|
||||
if l, ok := e.Logger.(*elog.Logger); ok {
|
||||
l.SetLevel(elog.ERROR)
|
||||
if !viper.GetBool("log.echo") {
|
||||
l.SetLevel(elog.OFF)
|
||||
}
|
||||
l.EnableColor()
|
||||
l.SetHeader(log.ErrFmt)
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user