golib/logger/log.go

84 lines
1.5 KiB
Go
Raw Normal View History

2023-06-15 21:22:51 +08:00
//
// log.go
// Copyright (C) 2022 tiglog <me@tiglog.com>
//
// 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 once sync.Once
var log_path = "./var/log/app.log"
var log_level = zerolog.InfoLevel
func SetLogPath(path string) {
log_path = path
}
func SetLogLevel(level zerolog.Level) {
log_level = level
}
var log *zerolog.Logger
func Get() *zerolog.Logger {
once.Do(func() {
zerolog.ErrorStackMarshaler = pkgerrors.MarshalStack
zerolog.TimeFieldFormat = time.RFC3339Nano
fileLogger := &lumberjack.Logger{
Filename: log_path,
MaxSize: 5, //
MaxBackups: 10,
MaxAge: 14,
Compress: true,
}
output := zerolog.MultiLevelWriter(os.Stderr, fileLogger)
l := zerolog.New(output).
Level(log_level).
With().
Timestamp().
Logger()
log = &l
})
return log
}
func Debug(msg string) {
Get().Debug().Msg(msg)
}
func Debugf(format string, v ...interface{}) {
Get().Debug().Msgf(format, v...)
}
func Info(msg string) {
Get().Info().Msg(msg)
}
func Infof(format string, v ...interface{}) {
Get().Info().Msgf(format, v...)
}
func Warn(msg string) {
Get().Warn().Msg(msg)
}
func Warnf(format string, v ...interface{}) {
Get().Warn().Msgf(format, v...)
}
func Error(msg string) {
Get().Error().Msg(msg)
}
func Errorf(format string, v ...interface{}) {
Get().Error().Msgf(format, v...)
}