高性能日志库go-logger2.0.5


前言:go-logger 是一个轻量级的日志库,提供了灵活的日志记录功能与文件备份功能,方便在应用程序中灵活地操作日志。
go-logger特点
  • 日志级别设置:允许动态调整日志级别,以便在不同环境下控制日志的详细程度。
  • 格式化输出:支持自定义日志的输出格式,包括时间戳、日志级别、日志位置 等元素。
  • 文件数回滚:支持按照日志文件数自动文件回滚,并防止文件数过多。
  • 文件压缩:支持压缩归档日志文件。
  • 支持标准库log/slog日志文件管理:支持标准库文件切割,压缩等功能。
go-logger的使用文档
go-logger源码

go-logger v2.0.5更新内容

  1. 增加formatter参数
  2. 增加Option参数


说明:

  • 通过formatter设置,可以自由修改输出的日志格式,添加自定义的日志标识
  • 如,默认日志输出:  [Debug]2024/06/05 11:07:22 logging_test.go:24 this is default logging
  • 通过修改formatter,相同的日志内容可以修改为类似如下的形式输出
    • this is default logging   2024/06/05 11:07:22 logging_test.go:24[Debug]    
    • this is default logging   [Debug] 2024/06/05 11:07:22 logging_test.go:24
    • [Debug]2024/06/05 11:07:22 logging_test.go:24 >>>>>>> this is default logging
  • 通过设置Option参数,可以设置logger的所有参数,同时建议通过Option统一设置logger的系列参数,通过该方式设置更加易于维护。
  • Option对象包含了日志级别,控制台日志,日志格式,输出格式formatter, 日志文件对象等参数。

formatter使用说明

设置日志标识输出格式 SetFormatter

SetFormatter("{level} {time} {file}:{message}\n")

默认格式:"{level} {time} {file}:{message}\n"

{level}        日志级别信息:如 [Debug],[Info],[Warn],[Error],[Fatal]
{time}         日志时间信息
{file}         文件位置行号信息
{message}      日志内容

说明:除了关键标识 {message} {time} {file} {level} 外,其他内容原样输出,如 | , 空格,换行 等

示例1:

SetFormatter("{message} | {level} {time} {file}\n")
Debug("11111111111111")

执行结果:

11111111111111|[Debug] 2024/06/05 11:07:22 logging_test.go:24

示例2

SetFormatter("{level}{time} {file} >>>> {message}\n")
Debug("2222222222222")

执行结果:

[Debug]2024/06/05 11:08:12 logging_test.go:24 >>>> 2222222222222

Option使用说明

建议通过option参数设置log的所有参数,更加易于维护

Level      :日志级别
Console    :控制台打印
Format     :日志格式,默认:FORMAT_LEVELFLAG | FORMAT_SHORTFILENAME | FORMAT_DATE | FORMAT_TIME
Formatter  :日志输出  默认:"{level} {time} {file}:{mesaage}\n"
FileOption :日志文件接口参数
FileOption介绍

FileOption为接口,有FileSizeMode与FileTimeMode两个实现对象

  • FileTimeMode对象
Filename   日志文件路径
Timemode   按小时,天,月份:MODE_HOUR,MODE_DAY,MODE_MONTH
Maxbuckup  最多备份日志文件数
IsCompress  备份文件是否压缩
  • FileSizeMode对象
Filename   日志文件路径
Maxsize    日志文件大小的最大值,超过则滚动备份
Maxbuckup  最多备份日志文件数
IsCompress  备份文件是否压缩

SetOption示例1

SetOption(&Option{Level: LEVEL_DEBUG, Console: false, FileOption: &FileTimeMode{Filename: "/usr/log/testlogtime.log", Maxbuckup: 10, IsCompress: true, Timemode: MODE_DAY}})

说明:以上option对象设置日志级别:LEVEL_DEBUG,控制台日志关闭,设置写日志文件,并按天(MODE_DAY)备份日志文件,保持最多10个备份文件,压缩切割的备份文件


SetOption示例2

SetOption(&Option{Level: LEVEL_DEBUG, Console: false, FileOption: &FileSizeMode{Filename: "testlog.log", Maxsize: 1<<30, Maxbuckup: 10, IsCompress: true}})

说明:以上option对象设置日志级别:LEVEL_DEBUG,控制台日志关闭,设置写日志文件,并按大小为 1G 切割日志文件,保持最多10个备份文件,压缩切割的备份文件