log4go 一直存在关闭时丢失记录的问题。网络上很多人怀疑是Flush。经过跟踪发现只要在 Close() 函数中增加以下语句:
for i := 10; i > 0 && len(w.rec) > 0; i-- {
time.Sleep(100 * time.Millisecond)
}
即可解决。实际上是一些测试小程序运行得太快,go routine 还没有运行就已经退出了。记录被留在了w.rec 中。
log4go 的特点之一是异步执行。充分利用golang 的 routine 特性,几乎所有的工作,例如日志格式化,显示输出,文件读写等都不会影响到主线程的执行。
请关注: