Skip to content

kyle-hy/zlog

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

zap 日志库的异步文件日志Sink

Sink

  • 自定义输出协议的Sink

    • 打印的日志先放入channel缓存
    • 后台起一个协程读取channel写入文件
    • 循环读channel缓存的日志、通过bufio合并写入文件,len(channel)为0则对bufio直接Flush。
    • 使用lumberjack滚动日志
  • TODO:后台写文件的协程,可使用runtime.SetFinalizer优化,更优雅地通过GC关闭。

使用方式

需要执行InitLog函数初始化

zaplog.InitLog(zaplog.BufioSize(1024*8), zaplog.WithFields(map[string]interface{}{"app": "dddd"}))

测试结果

MacBook Pro (13-inch, M1, 2020) 起1000个协程,总共写1000w条日志并Flush到文件,有无写缓存的对比:

  • 有bufio:缓存日志异步合并写文件,降低io消耗。每条日志耗时为1.099µs/p
  • 无bufio:缓存日志异步写,本质问题高频io没有解决,每条日志耗时为3.089µs/p

About

zap异步日志文件 Sink

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages