// // recover.go // Copyright (C) 2022 tiglog // // Distributed under terms of the MIT license. // package logger import ( "os" "sync" "github.com/natefinch/lumberjack" "github.com/rs/zerolog" ) 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() { 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(). Stack(). CallerWithSkipFrameCount(2). Logger() recover_log = &l }) return recover_log }