-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsugar.go
More file actions
142 lines (121 loc) · 5.49 KB
/
sugar.go
File metadata and controls
142 lines (121 loc) · 5.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
package slogx
import (
"context"
"fmt"
"strings"
)
// SugaredLogger provides zap.SugaredLogger-like interface with flattened arguments
// Converts arguments into a single message string using fmt.Sprint
//
// SugaredLogger 提供类似 zap.SugaredLogger 的平铺参数接口
// 使用 fmt.Sprint 将参数转换为单个消息字符串
type SugaredLogger struct {
logger *Logger
}
// NewSugaredLogger creates a new SugaredLogger with flattened argument support
// NewSugaredLogger 创建支持平铺参数的新 SugaredLogger
func NewSugaredLogger(logger *Logger) *SugaredLogger {
return &SugaredLogger{
logger: logger.Skip(1), // Extra skip to account of method calls
}
}
// Debug logs flattened arguments at debug level (like fmt.Sprint)
// Debug 在调试级别记录平铺参数(类似 fmt.Sprint)
func (s *SugaredLogger) Debug(args ...any) {
s.logger.Debug(s.formatSprint(args))
}
// Debugln logs flattened arguments at debug level with spaces (like fmt.Sprintln)
// Debugln 在调试级别记录平铺参数,用空格分隔(类似 fmt.Sprintln)
func (s *SugaredLogger) Debugln(args ...any) {
s.logger.Debug(s.formatToLine(args))
}
// Info logs flattened arguments at info level (like fmt.Sprint)
// Info 在信息级别记录平铺参数(类似 fmt.Sprint)
func (s *SugaredLogger) Info(args ...any) {
s.logger.Info(s.formatSprint(args))
}
// Infoln logs flattened arguments at info level with spaces (like fmt.Sprintln)
// Infoln 在信息级别记录平铺参数,用空格分隔(类似 fmt.Sprintln)
func (s *SugaredLogger) Infoln(args ...any) {
s.logger.Info(s.formatToLine(args))
}
// Warn logs flattened arguments at warn level (like fmt.Sprint)
// Warn 在警告级别记录平铺参数(类似 fmt.Sprint)
func (s *SugaredLogger) Warn(args ...any) {
s.logger.Warn(s.formatSprint(args))
}
// Warnln logs flattened arguments at warn level with spaces (like fmt.Sprintln)
// Warnln 在警告级别记录平铺参数,用空格分隔(类似 fmt.Sprintln)
func (s *SugaredLogger) Warnln(args ...any) {
s.logger.Warn(s.formatToLine(args))
}
// Error logs flattened arguments at error level (like fmt.Sprint)
// Error 在错误级别记录平铺参数(类似 fmt.Sprint)
func (s *SugaredLogger) Error(args ...any) {
s.logger.Error(s.formatSprint(args))
}
// Errorln logs flattened arguments at error level with spaces (like fmt.Sprintln)
// Errorln 在错误级别记录平铺参数,用空格分隔(类似 fmt.Sprintln)
func (s *SugaredLogger) Errorln(args ...any) {
s.logger.Error(s.formatToLine(args))
}
// DebugContext logs flattened arguments at debug level with context
// DebugContext 在调试级别记录平铺参数,带上下文
func (s *SugaredLogger) DebugContext(ctx context.Context, args ...any) {
s.logger.DebugContext(ctx, s.formatSprint(args))
}
// DebuglnContext logs flattened arguments at debug level with context and spaces
// DebuglnContext 在调试级别记录平铺参数,带上下文,用空格分隔
func (s *SugaredLogger) DebuglnContext(ctx context.Context, args ...any) {
s.logger.DebugContext(ctx, s.formatToLine(args))
}
// InfoContext logs flattened arguments at info level with context
// InfoContext 在信息级别记录平铺参数,带上下文
func (s *SugaredLogger) InfoContext(ctx context.Context, args ...any) {
s.logger.InfoContext(ctx, s.formatSprint(args))
}
// InfolnContext logs flattened arguments at info level with context and spaces
// InfolnContext 在信息级别记录平铺参数,带上下文,用空格分隔
func (s *SugaredLogger) InfolnContext(ctx context.Context, args ...any) {
s.logger.InfoContext(ctx, s.formatToLine(args))
}
// WarnContext logs flattened arguments at warn level with context
// WarnContext 在警告级别记录平铺参数,带上下文
func (s *SugaredLogger) WarnContext(ctx context.Context, args ...any) {
s.logger.WarnContext(ctx, s.formatSprint(args))
}
// WarnlnContext logs flattened arguments at warn level with context and spaces
// WarnlnContext 在警告级别记录平铺参数,带上下文,用空格分隔
func (s *SugaredLogger) WarnlnContext(ctx context.Context, args ...any) {
s.logger.WarnContext(ctx, s.formatToLine(args))
}
// ErrorContext logs flattened arguments at error level with context
// ErrorContext 在错误级别记录平铺参数,带上下文
func (s *SugaredLogger) ErrorContext(ctx context.Context, args ...any) {
s.logger.ErrorContext(ctx, s.formatSprint(args))
}
// ErrorlnContext logs flattened arguments at error level with context and spaces
// ErrorlnContext 在错误级别记录平铺参数,带上下文,用空格分隔
func (s *SugaredLogger) ErrorlnContext(ctx context.Context, args ...any) {
s.logger.ErrorContext(ctx, s.formatToLine(args))
}
// formatSprint converts arguments to a single message string using fmt.Sprint
// Uses fmt.Sprint semantics - no spaces between string arguments
//
// formatSprint 使用 fmt.Sprint 将参数转换为单个消息字符串
// 使用 fmt.Sprint 语义 - 字符串参数之间没有空格
func (s *SugaredLogger) formatSprint(args []any) string {
return fmt.Sprint(args...)
}
// formatToLine converts arguments to a single message string with spaces
// Adds spaces between arguments like fmt.Sprintln semantics
//
// formatToLine 将参数转换为单个消息字符串,参数间用空格分隔
// 在参数之间添加空格,类似 fmt.Sprintln 语义
func (s *SugaredLogger) formatToLine(args []any) string {
parts := make([]string, len(args))
for i, arg := range args {
parts[i] = fmt.Sprint(arg)
}
return strings.Join(parts, " ")
}