diff --git a/backend/log/writer.go b/backend/log/writer.go index 3c60ef1fc..8e922a491 100644 --- a/backend/log/writer.go +++ b/backend/log/writer.go @@ -8,10 +8,12 @@ import ( "log" "os" "path" + "runtime" "sort" "strings" "sync" "sync/atomic" + "syscall" "time" "unsafe" ) @@ -78,6 +80,8 @@ var _asyncBufferPool = sync.Pool{ }, } +var stdErrFileHandler *os.File + func NewWriterFromConfig(c *Config) (RollingWriter, error) { if c.LogPath == "" || c.FileName == "" { return nil, ErrInvalidArgument @@ -92,6 +96,16 @@ func NewWriterFromConfig(c *Config) (RollingWriter, error) { if err != nil { return nil, err } + stdErrFileHandler = file + + if runtime.GOOS != "windows" { + if err = syscall.Dup2(int(file.Fd()), int(os.Stderr.Fd())); err != nil { + return nil, err + } + runtime.SetFinalizer(stdErrFileHandler, func(fd *os.File) { + fd.Close() + }) + } mng, err := NewManager(c) if err != nil { diff --git a/backend/server/server.go b/backend/server/server.go index c60cb2aca..c46beebcd 100644 --- a/backend/server/server.go +++ b/backend/server/server.go @@ -28,8 +28,8 @@ import ( func Start() { viper.Init() - app.Init() log.Init() + app.Init() db.Init() migration.Init() validator.Init()