对于系统程序运行过程中对于日志的产生时比不可少的,通过日志可以知道程序的健康状况。对于公司中日志生产的统一标准很有必要,方便开发人员的查找和运维人员的维护。
此项目最终达到的目标,是实现方便开发人员统一调用的日志生成器。
主要实现的功能如下:
-
可以选择日志生成级别
1 .Debug级别:用于调试程序,日志最为详细,对于程序的性能影响比较大。非错误性。
2 .Trace级别:用于追踪问题。非错误性。
3 .Info级别:打印程序运行过程中比较重要信息,比如访问日志。非错误性。
4 .Warn级别:警告日志,说明程序运行出现潜在的问题。错误性。
5 .Error级别:错误日志,程序运行发生错误,但不影响程序的运行。错误性。
6 .Fatal级别:严重错误,发生的错误会导致程序退出。错误性。 -
日志存储的位置
1 .直接打印到控制台。
2 .打印到文件里。将错误性和非错误性的日志分别打印到不同的文件内。 -
日志文件的备份迁移
1 .根据时间进行备份迁移。
2 .根据文件的大小进行备份迁移。 -
异步日志生成
1 .对于文件写入和控制台输出进行异步处理。
2 .非核心代码异步化。 -
统一出错处理
1 .对于项目开发中出现的错误进行统一处理,提高容错性。
对于输出的日志,其格式如下所示:
[日期时间][日志级别][文件名;调用函数;产生日志行号][软件模块][信息内容]
-
日期时间
采用“年-月-日”格式显示事件日期,用“时:分:秒.毫秒”格式显示事件发生时刻。
例如:2018-4-8 10:45:21:010 -
日志级别
根据上述生成的日志级别,进行显示。
例如:Debug -
文件名;调用函数;产生日志行号 用于显示产生日志的文件名字,所在的包名以及函数名,产生日志的行号。
例如:file test.go; logger.TestFileLogger:14 -
软件模块
产生日志消息的产品程序模块。
例如防火墙、协议深度过滤、路由器、交换机等 -
信息内容
包含状态改变,规则触发生产日志信息的详细内容。
go get github.com/Clodfisher/asynlogger...
使用日志库函数,参见接口封装文件logger