允许不同级别的写入info

This commit is contained in:
yun
2026-10-05 19:30:40 +08:00
parent 7e1b474823
commit a9adc11fad
6 changed files with 600 additions and 32 deletions
+11 -2
View File
@@ -108,8 +108,17 @@ func (l *Logger) logger(ctx context.Context, event string, v ...any) {
l.reportError(fmt.Errorf("loggerx: 写入日志失败: %w", err))
}
if l.option.errorToInfo && event == "error" {
if _, err := l.write("info", line1); err != nil {
// allLevelToInfo:除 info 之外的所有级别(debug/warn/error)都额外往同一个
// info 日志里再写一份,info.log 因此成为「一个文件看全量」的汇总文件。
// event 只会是包内固定的四个字面量(info/debug/warn/error,见 loggerx.go),
// 所以 event != "info" 恰好等价于「其它所有级别」
//
// 两个细节:
// - 复制出来的行保留原始 level 字段,info.log 里依然能区分级别;
// - 走 writeFileOnly 而不是 write:镜像不再经过额外驱动,
// 否则控制台/自定义 writer 上每条非 info 日志都会重复输出两遍
if l.option.allLevelToInfo && event != "info" {
if _, err := l.writeFileOnly("info", line1); err != nil {
l.reportError(fmt.Errorf("loggerx: 写入 info 日志失败: %w", err))
}
}