Go 轻量级的日志库
import (
log "github.com/treeforest/logger"
)
- 默认控制台输出(同步写)
var defaultLogger Logger = NewStdLogger() ... log.Debug(...) // std output
- 用户自定义控制台日志对象
l := log.NewStdLogger( log.WithLevel(log.DEBUG), log.WithPrefix("test"), ) ... l.Debug("hello world")
-
日志分割模式
定时切割:每天24点将会进行日志的切割,把每天的日志分开存储。
阈值切割:在日志写的时候触发检查日志文件大小的事件,若达到阈值,则进行日志切割。
-
日志写模式
同步写:每条日志的打印将会进行一次磁盘的刷新,将缓冲区中的日志刷新到磁盘。
异步写:日志的写入将会先写到缓冲区,只有当异步刷盘的定时器触发时才会将缓冲区的日志刷新到磁盘。使用异步写时,为确保日志不丢失,应使用Stop方法安全关闭日志。
-
同步写日志对象
l := log.NewSyncFileLogger(
".",
1024*1024*8,
log.WithLevel(log.DEBUG),
log.WithPrefix("example"),
)
- 异步写日志对象
l := log.NewAsyncFileLogger(
".",
1024*1024*8,
1024*64,
time.Second,
log.WithLevel(log.DEBUG),
log.WithPrefix("example"),
)
- 五种日志级别:debuf/info/warn/error/fatal
- 输出到控制台
- 输出到文件
- 同步写
- 异步写
- 日志格式
- 控制台一般格式
- json
- 日志文件切割
- 每天24点切割日志文件
- 根据日志文件阈值切割
- 将ERROR以上级别的日志输出到.error.log文件
测试环境
CPU: 11th Gen Intel(R) Core(TM) i5-1135G7 @ 2.40GHz 2.42 GHz
Memory: 16G
Go: 1.18.1
OS: Windows 11
Hardware: SSD(UMIS RPJTJ512MEE1OWX)
TPS
-
日志文件同步写
≈ 2000 entry/second
-
日志文件异步写
写缓冲区大小 刷盘频率 TPS 16KB 1s 55000 entry/second 32KB 1s 75000 entry/second 64KB 1s 110000 entry/second 128KB 1s 170000 entry/second -
控制台输出
≈ 10000 entry/second