log 是golang语言编写的日志打印库。包含了所有终端支持的打印格式,如前景色,背景色,粗体,闪烁等等。同时支持时间标签,输出文件位置以及函数名称,堆栈信息。
多种终端格式通过设计可以叠加一起使用。方便的自定义接口,可以组合出任意的输出格式,方便进行信息筛选。支持多通道输出,可以输出至终端,文件,网络,数据库等等。
支持多种渠道的预警通知,可以自定义日志预警级别。出发对应级别日志后能通过邮件,钉钉等渠道进行实时预警。
仅仅需要在你的工程里面添加如下代码,其他的log会自己完成
import (
"github.com/nerored/log"
)如果你没有特别的调整需求,这样就可以开始使用了。如果需要做部分的定制,目前提供如下自定义接口
- 自定义时间标签的格式
func SetTimeFormat(format string) {
sharedPrinter.timeFormat = format
}- 添加新的输出通道
func AddWriter(writers ...writer) {
for _, w := range writers {
if w == nil {
continue
}
sharedPrinter.writerList = append(sharedPrinter.writerList, w)
}
}如果需要自己定义输出渠道需要实现writer接口,具体用法以及规则参考源码,很容易:)。
type writer interface {
init()
exit()
needColor() bool
info() io.Writer
erro() io.Writer
}- TODO::启用输出到文件,定义文件名格式,分割规则(时间,大小)
- TODO::启用预警通知,可以选择默认的通知方式,也可以增加自己的通知
- TODO::定义网络接受方式
log 默认提供6个等级(不同格式)的日志输出,直接调用对应的函数即可。
也可以使用能自定义的Ulog接口
Ulog(level int8, flags int16, format string, args ...interface{})level 表示日志的等级,影响日志的前缀标签以及基本颜色
const (
LOG_LEVEL_USER = iota
LOG_LEVEL_DEBU
LOG_LEVEL_INFO
LOG_LEVEL_TRAC
LOG_LEVEL_WARN
LOG_LEVEL_ERRO
LOG_LEVEL_FATA
)flags 表示需要组合的日志基本信息,通过位操作"|",完成功能的组合
const (
PRINT_TIMELAB = 0x0100 //打印时间标签,输出结果受 SetTimeFormat 的影响
PRINT_FILELOC = 0x0200 //打印日志标记的文件位置
PRINT_FUNCNAM = 0x0400 //打印调用日志输出的函数名称
PRINT_STACKIN = 0x0800 //是否需要输出堆栈信息
PRINT_STACKDP = 0x00FF //输出的堆栈信息深度,值范围为0-255
//默认日志接口使用的组合方式
PRINT_DEFINE = PRINT_TIMELAB | PRINT_FILELOC | PRINT_FUNCNAM
//快速的日志跟踪打印
PRINT_UTRACE = PRINT_DEFINE | PRINT_STACKIN | 10
)目前完成了输出到终端的部分,后续会完成输出到文件,attach 到网络连接。以及日志预警.