@@ -2,6 +2,8 @@ package main
22
33import (
44 "context"
5+ "fmt"
6+ "io"
57 "os"
68
79 "github.com/tendermint/tendermint/cmd/tenderdash/commands"
@@ -21,10 +23,11 @@ func main() {
2123 panic (err )
2224 }
2325
24- logger , err := log . NewDefaultLogger (conf . LogFormat , conf . LogLevel )
26+ logger , stopFn , err := newLoggerFromConfig (conf )
2527 if err != nil {
2628 panic (err )
2729 }
30+ defer stopFn ()
2831
2932 rcmd := commands .RootCommand (conf , logger )
3033 rcmd .AddCommand (
@@ -64,3 +67,30 @@ func main() {
6467 os .Exit (2 )
6568 }
6669}
70+
71+ func newLoggerFromConfig (conf * config.Config ) (log.Logger , func (), error ) {
72+ var (
73+ writer io.Writer = os .Stderr
74+ closeFunc = func () {}
75+ err error
76+ )
77+ if conf .LogFilePath != "" {
78+ file , err := os .OpenFile (conf .LogFilePath , os .O_WRONLY | os .O_CREATE | os .O_APPEND , 0644 )
79+ if err != nil {
80+ return nil , nil , fmt .Errorf ("failed to create log writer: %w" , err )
81+ }
82+ closeFunc = func () {
83+ _ = file .Close ()
84+ }
85+ writer = io .MultiWriter (writer , file )
86+ }
87+ writer , err = log .NewFormatter (conf .LogFormat , writer )
88+ if err != nil {
89+ return nil , nil , fmt .Errorf ("failed to create log formatter: %w" , err )
90+ }
91+ logger , err := log .NewLogger (conf .LogLevel , writer )
92+ if err != nil {
93+ return nil , nil , err
94+ }
95+ return logger , closeFunc , nil
96+ }
0 commit comments