NATS源代码之logger目录

nats的logger目录文件如下

log.go

syslog.go

syslog_windows.go

基于golang语言的logger包实现日志功能。

Golang的log包短小精悍,可以非常轻松的实现日志打印转存功能。不用多说,log支持并发操作(即协程安全-相对于Java中的线程安全而言),其结构定义如下:

type Logger struct {
	mu     sync.Mutex // ensures atomic writes; protects the following fields
	prefix string     // prefix to write at beginning of each line //  日志行前缀
	flag   int        // properties // 日志打印格式标志,用于指定每行日志的打印格式
	out    io.Writer  // destination for output // 用于指定日志输出位置,理论上可以是任务地方,只要实现了io.Writer接口就行
	buf    []byte     // for accumulating text to write // 日志内容
}

打印日志有5个方法 Debug,Info,Warn, Error ,Fatal 日志级别由低到高

设置日志级别的方法为:logger.SetLevel() 如:logger.SetLevel(logger.WARN)
则:logger.Debug(....),logger.Info(...) 日志不会打出,而
logger.Warn(...),logger.Error(...),logger.Fatal(...)日志会打出。
设置日志级别的参数有7个,分别为:ALL,DEBUG,INFO,WARN,ERROR,FATAL,OFF
其中 ALL表示所有调用打印日志的方法都会打出,而OFF则表示都不会打出。

日志文件切割有两种类型:1为按日期切分。2为按日志大小切分。
按日期切分时:每天一个备份日志文件,后缀为 .yyyy-MM-dd
过0点是生成前一天备份文件

按大小切分是需要3个参数,1为文件大小,2为单位,3为文件数量
文件增长到指定限值时,生成备份文件,结尾为依次递增的自然数。
文件数量增长到指定限制时,新生成的日志文件将覆盖前面生成的同名的备份日志文件。

log.go

// SysLogger logs to the windows event logger
type SysLogger struct {
	writer *eventlog.Log
	debug  bool
	trace  bool
}

提供两种模式,基于两个函数: NewStdLogger  NewFileLogger

syslog.go

// SysLogger provides a system logger facility
type SysLogger struct {
	writer *syslog.Writer
	debug  bool
	trace  bool
}

基于 log.syslog,提供两个函数: NewSysLogger  NewRemoteSysLogger 支持远程日志功能

syslog包为系统日志服务提供了一个简单的接口。

syslog_windows.go

基于"golang.org/x/sys/windows/svc/eventlog"实现向windows系统写入事件

// SysLogger logs to the windows event logger
type SysLogger struct {
	writer *eventlog.Log
	debug  bool
	trace  bool
}

提供两个函数: NewSysLogger  NewRemoteSysLogger

  

原文地址:https://www.cnblogs.com/hetonghai/p/6476439.html