// // recover.go // Copyright (C) 2022 tiglog // // Distributed under terms of the MIT license. // package logger import ( "os" "sync" "time" "github.com/natefinch/lumberjack" "github.com/rs/zerolog" "github.com/rs/zerolog/pkgerrors" ) var recover_once sync.Once var recover_log *zerolog.Logger var recover_log_path = "./var/log/recover.log" func SetupRecoverLogFile(path string) { recover_log_path = path } func Recover() *zerolog.Logger { recover_once.Do(func() { zerolog.ErrorStackMarshaler = pkgerrors.MarshalStack zerolog.TimeFieldFormat = time.RFC3339Nano fileLogger := &lumberjack.Logger{ Filename: recover_log_path, MaxSize: 5, // MaxBackups: 10, MaxAge: 14, Compress: true, } output := zerolog.MultiLevelWriter(os.Stderr, fileLogger) l := zerolog.New(output). // Level(zerolog.InfoLevel). With(). Timestamp(). Logger() recover_log = &l }) return recover_log }