Skip to content

nerored/log

Repository files navigation

MIT licensed Build Status Go Report Card Coverage Statusd

log

介绍

 log 是golang语言编写的日志打印库。包含了所有终端支持的打印格式,如前景色,背景色,粗体,闪烁等等。同时支持时间标签,输出文件位置以及函数名称,堆栈信息。
 多种终端格式通过设计可以叠加一起使用。方便的自定义接口,可以组合出任意的输出格式,方便进行信息筛选。支持多通道输出,可以输出至终端,文件,网络,数据库等等。
 支持多种渠道的预警通知,可以自定义日志预警级别。出发对应级别日志后能通过邮件,钉钉等渠道进行实时预警。

安装

 仅仅需要在你的工程里面添加如下代码,其他的log会自己完成

import (
	"github.com/nerored/log"
)

使用

 如果你没有特别的调整需求,这样就可以开始使用了。如果需要做部分的定制,目前提供如下自定义接口

  1. 自定义时间标签的格式
func SetTimeFormat(format string) {
	sharedPrinter.timeFormat = format
}
  1. 添加新的输出通道
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
}
  1. TODO::启用输出到文件,定义文件名格式,分割规则(时间,大小)
  2. TODO::启用预警通知,可以选择默认的通知方式,也可以增加自己的通知
  3. 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 到网络连接。以及日志预警.

Have Fun !

About

golang 实现的异步多输出日志库

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages