1- // Package logs 提供了一个简单、灵活且线程安全的日志记录系统。
21package logs
32
43import (
@@ -9,20 +8,17 @@ import (
98 "time"
109)
1110
12- // LogLevel 表示日志级别的枚举类型
1311type LogLevel int
1412
15- // 定义不同的日志级别常量
1613const (
17- None LogLevel = iota // 无日志输出
18- Debug // 调试级别
19- Info // 信息级别
20- Warn // 警告级别
21- Error // 错误级别
22- Event // 事件级别
14+ None LogLevel = iota
15+ Debug
16+ Info
17+ Warn
18+ Error
19+ Event
2320)
2421
25- // levelStrings 将日志级别映射到对应的字符串表示
2622var levelStrings = map [LogLevel ]string {
2723 None : "NONE" ,
2824 Debug : "DEBUG" ,
@@ -32,17 +28,15 @@ var levelStrings = map[LogLevel]string{
3228 Event : "EVENT" ,
3329}
3430
35- // ANSI转义序列,用于控制终端输出的颜色
3631const (
37- ansiBlue = "\033 [34m" // 蓝色
38- ansiGreen = "\033 [32m" // 绿色
39- ansiYellow = "\033 [33m" // 黄色
40- ansiRed = "\033 [31m" // 红色
41- ansiCyan = "\033 [36m" // 青色
42- resetColor = "\033 [0m" // 重置颜色
32+ ansiBlue = "\033 [34m"
33+ ansiGreen = "\033 [32m"
34+ ansiYellow = "\033 [33m"
35+ ansiRed = "\033 [31m"
36+ ansiCyan = "\033 [36m"
37+ resetColor = "\033 [0m"
4338)
4439
45- // levelColors 将日志级别映射到对应的ANSI颜色代码
4640var levelColors = map [LogLevel ]string {
4741 None : "" ,
4842 Debug : ansiBlue ,
@@ -52,31 +46,26 @@ var levelColors = map[LogLevel]string{
5246 Event : ansiCyan ,
5347}
5448
55- // Logger 是自定义的日志记录器结构体
5649type Logger struct {
57- mu sync.Mutex // 互斥锁,确保并发安全
58- minLogLevel LogLevel // 最小日志级别,低于此级别的日志不会被输出
59- enableColor bool // 是否启用彩色输出
60- timeFormat string // 时间戳格式
50+ mu sync.Mutex
51+ minLogLevel LogLevel
52+ enableColor bool
53+ timeFormat string
6154}
6255
63- // logAdapter 是标准日志库的适配器
6456type logAdapter struct {
6557 logger * Logger
6658}
6759
68- // StdLogger 返回一个标准库日志实例,它将使用当前Logger输出日志
6960func (l * Logger ) StdLogger () * log.Logger {
7061 return log .New (& logAdapter {logger : l }, "" , 0 )
7162}
7263
73- // Write 实现io.Writer接口,使logAdapter可以作为标准日志库的输出目标
7464func (a * logAdapter ) Write (p []byte ) (n int , err error ) {
7565 a .logger .Debug ("Internal: %s" , string (bytes .TrimSpace (p )))
7666 return len (p ), nil
7767}
7868
79- // NewLogger 创建并返回一个新的Logger实例
8069func NewLogger (logLevel LogLevel , enableColor bool ) * Logger {
8170 if logLevel < None || logLevel > Event {
8271 logLevel = Info
@@ -89,7 +78,6 @@ func NewLogger(logLevel LogLevel, enableColor bool) *Logger {
8978 }
9079}
9180
92- // SetLogLevel 设置最小日志级别
9381func (l * Logger ) SetLogLevel (logLevel LogLevel ) {
9482 if l .minLogLevel != logLevel {
9583 l .mu .Lock ()
@@ -98,14 +86,12 @@ func (l *Logger) SetLogLevel(logLevel LogLevel) {
9886 }
9987}
10088
101- // GetLogLevel 获取当前的最小日志级别
10289func (l * Logger ) GetLogLevel () LogLevel {
10390 l .mu .Lock ()
10491 defer l .mu .Unlock ()
10592 return l .minLogLevel
10693}
10794
108- // EnableColor 设置是否启用彩色输出
10995func (l * Logger ) EnableColor (enable bool ) {
11096 if l .enableColor != enable {
11197 l .mu .Lock ()
@@ -114,7 +100,6 @@ func (l *Logger) EnableColor(enable bool) {
114100 }
115101}
116102
117- // log 是内部日志记录函数,处理通用的日志记录逻辑
118103func (l * Logger ) log (logLevel LogLevel , format string , v ... any ) {
119104 if logLevel < None || logLevel > Event {
120105 logLevel = Info
@@ -135,7 +120,6 @@ func (l *Logger) log(logLevel LogLevel, format string, v ...any) {
135120 l .writeLog (logLevel , timestamp , levelStr , message )
136121}
137122
138- // writeLog 负责实际的日志输出,支持彩色或普通文本输出
139123func (l * Logger ) writeLog (level LogLevel , timestamp , levelStr , message string ) {
140124 if l .enableColor {
141125 colorCode := levelColors [level ]
@@ -145,27 +129,22 @@ func (l *Logger) writeLog(level LogLevel, timestamp, levelStr, message string) {
145129 }
146130}
147131
148- // Debug 输出调试级别的日志
149132func (l * Logger ) Debug (format string , v ... any ) {
150133 l .log (Debug , format , v ... )
151134}
152135
153- // Info 输出信息级别的日志
154136func (l * Logger ) Info (format string , v ... any ) {
155137 l .log (Info , format , v ... )
156138}
157139
158- // Warn 输出警告级别的日志
159140func (l * Logger ) Warn (format string , v ... any ) {
160141 l .log (Warn , format , v ... )
161142}
162143
163- // Error 输出错误级别的日志
164144func (l * Logger ) Error (format string , v ... any ) {
165145 l .log (Error , format , v ... )
166146}
167147
168- // Event 输出事件级别的日志
169148func (l * Logger ) Event (format string , v ... any ) {
170149 l .log (Event , format , v ... )
171150}
0 commit comments