允许不同级别的写入info
This commit is contained in:
@@ -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))
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user