47 lines
1.3 KiB
Go
47 lines
1.3 KiB
Go
package log
|
||
|
||
import (
|
||
"io"
|
||
"log/slog"
|
||
"os"
|
||
"path"
|
||
"path/filepath"
|
||
"slgserver/config"
|
||
"strings"
|
||
|
||
"gopkg.in/natefinch/lumberjack.v2"
|
||
)
|
||
|
||
func init() {
|
||
fileDir := config.GetString("log.file_dir", "../log/")
|
||
maxSize := config.GetInt("log.max_size", 128)
|
||
maxBackups := config.GetInt("log.max_backups", 30)
|
||
maxAge := config.GetInt("log.max_age", 7)
|
||
compress := config.GetBool("log.compress", true)
|
||
|
||
sa := strings.Split(filepath.Base(os.Args[0]), ".")
|
||
fileName := sa[0] + ".log"
|
||
hook := &lumberjack.Logger{
|
||
Filename: path.Join(fileDir, fileName), // 日志文件路径
|
||
MaxSize: maxSize, // 每个日志文件保存的最大尺寸 单位:M
|
||
MaxBackups: maxBackups, // 日志文件最多保存多少个备份
|
||
MaxAge: maxAge, // 文件最多保存多少天
|
||
Compress: compress, // 是否压缩
|
||
}
|
||
|
||
// 创建多写入器:同时写入标准输出和文件
|
||
multiWriter := io.MultiWriter(os.Stdout, hook)
|
||
|
||
// 创建 JSON handler,包含调用者信息
|
||
opts := &slog.HandlerOptions{
|
||
Level: slog.LevelInfo,
|
||
AddSource: true, // 添加调用者信息
|
||
}
|
||
|
||
handler := slog.NewJSONHandler(multiWriter, opts)
|
||
logger := slog.New(handler)
|
||
|
||
// 使用 slog 标准方式设置默认 logger
|
||
slog.SetDefault(logger)
|
||
}
|