12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- package logger
- import (
- "io"
- "log/slog"
- "os"
- )
- import (
- "gopkg.in/natefinch/lumberjack.v2"
- )
- import (
- "resource-server/common"
- )
- var lumberJackLogger *lumberjack.Logger
- var logger *slog.Logger
- func SetupLogger(persisted bool) {
- //设置日志级别
- var level = new(slog.LevelVar)
- switch common.LoggerConfig.LogLevel {
- case "DEBUG":
- level.Set(slog.LevelDebug)
- case "INFO":
- level.Set(slog.LevelInfo)
- case "WARN":
- level.Set(slog.LevelWarn)
- case "ERROR":
- level.Set(slog.LevelError)
- default:
- level.Set(slog.LevelInfo)
- }
- opts := &slog.HandlerOptions{
- Level: level,
- AddSource: true,
- }
- lumberJackLogger = &lumberjack.Logger{
- Filename: common.LoggerConfig.LogDir, //日志文件的位置
- MaxSize: common.LoggerConfig.MaxSize, //在进行切割之前,日志文件的最大大小(以MB为单位)
- MaxAge: common.LoggerConfig.MaxAge, //保留旧文件的最大天数
- Compress: common.LoggerConfig.Compress, //是否压缩/归档旧文件
- LocalTime: true,
- }
- if persisted {
- if common.LoggerConfig.Stdout {
- logger = slog.New(slog.NewTextHandler(io.MultiWriter(lumberJackLogger, os.Stdout), opts))
- } else {
- logger = slog.New(slog.NewTextHandler(lumberJackLogger, opts))
- }
- } else {
- logger = slog.New(slog.NewTextHandler(os.Stdout, opts))
- }
- slog.SetDefault(logger)
- //todo 输出到robot
- slog.Info("setup logger ok", "level", level.String())
- }
- func ShutdownLogger() {
- lumberJackLogger.Rotate()
- }
- func WithGroup(name string) *slog.Logger {
- return logger.WithGroup(name)
- }
- func With(args ...any) *slog.Logger {
- return logger.With(args)
- }
|