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 ... }