欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 时评 > go官方日志库带色彩格式化

go官方日志库带色彩格式化

2025/2/22 2:03:40 来源:https://blog.csdn.net/a15561415881/article/details/144585179  浏览:    关键词:go官方日志库带色彩格式化

go默认的 log 输出的日志样式比较难看,所以通过以下方式进行了美化和格式化,而且加入了 unicode 的ascii码,进行色彩渲染。

package mainimport ("fmt""log""os""runtime""strings""time"
)// 自定义日志格式
type CustomLogger struct {logger *log.Logger
}var levelColors map[string]string = map[string]string{"DEBUG":    "\x1b[97;46m", // 蓝色"INFO":     "\x1b[97;42m", // 绿色"WARNING":  "\x1b[97;43m", // 黄色"ERROR":    "\x1b[97;41m", // 红色"CRITICAL": "\x1b[97;45m", // 红色加粗"SUCCESS":  "\x1b[97;42m", // 绿色加粗
}// 初始化自定义日志
func NewCustomLogger() *CustomLogger {return &CustomLogger{logger: log.New(os.Stdout, "", 0), // 输出到标准输出,不带前缀}
}// 自定义日志格式
func (l *CustomLogger) formatLog(level string, message string) string {// 获取当前时间now := time.Now().Format("2006-01-02 15:04:05.000")// 获取调用栈信息pc, file, line, ok := runtime.Caller(3) // 跳过三层调用栈caller := "unknown"if ok {funcName := runtime.FuncForPC(pc).Name()caller = fmt.Sprintf("%s:%d", file, line)if index := strings.LastIndex(funcName, "."); index != -1 {caller = fmt.Sprintf("%s.%s:%d", funcName[:index], funcName[index+1:], line)}}// 构建日志格式return fmt.Sprintf("\x1b[32m%s\x1b[0m |%s%s\x1b[0m| \x1b[35m%s\x1b[0m - \x1b[33m%s\x1b[0m",now, levelColors[level], level, caller, message)
}// 日志输出函数
func (l *CustomLogger) Log(level string, message string) {logLine := l.formatLog(level, message)l.logger.Println(logLine)
}// 不同级别的日志函数
func (l *CustomLogger) Info(message string) {l.Log("INFO", message)
}func (l *CustomLogger) Infof(format string, v ...any) {message := fmt.Sprintf(format, v...)l.Log("INFO", message)
}func (l *CustomLogger) Error(message string) {l.Log("ERROR", message)
}func (l *CustomLogger) Errorf(format string, v ...any) {message := fmt.Sprintf(format, v...)l.Log("ERROR", message)
}func (l *CustomLogger) Debug(message string) {l.Log("DEBUG", message)
}func (l *CustomLogger) Debugf(format string, v ...any) {message := fmt.Sprintf(format, v...)l.Log("DEBUG", message)
}

下面是实际展示效果:
在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词