1

I want to set the default logger GIN is using zerolog and print to the os.Stdout, but when log level is error it should print it to a file

in func main.go

func main() { zerolog.TimeFieldFormat = "02-01-2006 15:04:05" zerolog.ErrorStackMarshaler = pkgerrors.MarshalStack zerolog.SetGlobalLevel(zerolog.InfoLevel) r := gin.Default() r.Use(logger.SetLogger( logger.WithLogger(func(ctx *gin.Context, l zerolog.Logger) zerolog.Logger { if l.GetLevel() == zerolog.ErrorLevel { return l.Output(file).With().Caller().Logger() } return l.Output(os.Stdout).With().Caller().Logger() }), )) ... } 

then when routing I pass &log.Logger

func GetTasks(ctx *gin.Context, db *sql.DB, log *zerolog.Logger) { statement, err := db.Prepare("SELECT * FROM tasks ORDER BY id ASC") log.Error().Err(errors.New("halo....")).Msg("") // I expecting that the code above will print the error to file ... } 

0

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.