// // work.go // Copyright (C) 2023 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 work_once sync.Once var work_log *zerolog.Logger var work_log_path = "./var/log/work.log" func SetupWorkLogFile(path string) { access_log_path = path } func Work() *zerolog.Logger { work_once.Do(func() { zerolog.ErrorStackMarshaler = pkgerrors.MarshalStack zerolog.TimeFieldFormat = time.RFC3339Nano fileLogger := &lumberjack.Logger{ Filename: work_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() work_log = &l }) return work_log }