golang log4go 使用说明及丢失日志原因
1. 描述
这个 repository 是从 alecthomas 的 log4go
重构而来的,log4go
是一个类似于用于 Java
编程语言的 log4j
的日志包。源于 Google 的一项 log 工程,官方已经停止维护更新。
仓库地址:
https://github.com/jeanphorn/log4go.git
2. 特点
- 日志输出到终端
- 日志输出到文件,支持按大小和时间切片
- 日志输出到网络
- 日志异步输出
- 支持
json
文件配置 - 日志分类
- 不同类别的日志,输出到不同的printer中.
- 兼容老的日志方式
3. 使用示例
- 下载源码
go get github.com/jeanphorn/log4go
- 导入进工程
import log "github.com/jeanphorn/log4go"
- 具体步骤,请查看
https://github.com/jeanphorn/log4go
4. 不用配置文件使用
也可以不适用配置文件,直接在代码中设置好 log
的格式、回滚级别、备份日志个数等,代码示例如下:
package mainimport (l4g "github.com/jeanphorn/log4go"
)var (Log l4g.Logger = make(l4g.Logger)
)func InitLog(filename string) {_, err := os.Stat("./log/")if os.IsNotExist(err) {os.Mkdir("./log/", 0755)}flw := l4g.NewFileLogWriter("./log/"+filename, false, false)flw.SetFormat("[%D %T] [%L] (%S) %M")flw.SetRotate(true)flw.SetRotateSize(1 * 1024 * 1024) // 10Mflw.SetRotateMaxBackup(10) // 备份的日志文件数量flw.SetRotateDaily(false) // 不按天回滚flw.SetSanitize(true)Log.AddFilter("file", l4g.INFO, flw)Log.Info("Log init done")time.Sleep(100 * time.Microsecond)
}func main() {InitLog("test.log")Log.Info("this is info")
}
但是运行之后,log 文件中没有日志打印,原因是:
log4go
用的是 channel
暂存日志,打印会另起一个 goroutine
进行,但是主 goroutine
退出太快时,负责打印日志的 goroutine
没机会把 channel
中的日志打印出来,导致日志丢失。
5. 解决方法
在程序最后加上: time.Sleep(time.Microsecond)
, sleep()
调用会留给打印日志的 goroutine
执行的时间。
func main() {InitLog("test.log")Log.Error("this is error")time.Sleep(100 * time.Microsecond)Log.Info("this is info")time.Sleep(100 * time.Microsecond)
}
6. 其它 log 库
- https://github.com/hhkbp2/go-logging.git
- https://github.com/cihub/seelog
参考:
- https://stackoverrun.com/cn/q/3852638
- https://www.v2ex.com/amp/t/239039
golang log4go 使用说明及丢失日志原因相关推荐
- Session莫名丢失的原因及解决办法[转载]
Asp.net 默认配置下,Session莫名丢失的原因及解决办法 正常操作情况下Session会无故丢失.因为程序是在不停的被操作,排除Session超时的可能.另外,Session超时时间被设定成 ...
- ASP.NET Session丢失问题原因及解决方案[转]
不得不老调重弹 正常操作情况下会有ASP.NET Session丢失的情况出现.因为程序是在不停的被操作,排除Session超时的可能.另外,Session超时时间被设定成60分钟,不会这么快就超时的 ...
- Android学习——R文件丢失异常原因汇总
Console报错:R.java was modified manually! Reverting to generated version! 引言: R文件丢失异常在java开发中是个比较常见的异常 ...
- android r文件错误,Android R文件丢失异常原因汇总
Console报错:R.java was modified manually! Reverting to generated version! 引言: R文件丢失异常在java开发中是个比较常见的异常 ...
- Hyper-V下的Linux虚拟机网卡丢失问题原因及解决办法
Hyper-V下的Linux虚拟机网卡丢失问题原因及解决办法 虚拟化大势所趋 公司推行了虚拟化,全部用的是Microsoft Windows 2008 R2 Enterprise with Hyper ...
- mouseup 左键_javascript中mouseup事件丢失的原因与解决办法
这篇文章主要跟大家介绍了关于Javascript中mouseup事件丢失的原因与解决办法的相关资料,文中给出详细的示例代码供大家参考学习,需要的朋友们下面跟着小编一起来学习学习吧. 前言 当实现类似E ...
- Frameset导致Cookies和Session丢失的原因及解决办法
参考资料 1 Frameset导致Cookies和Session丢失的原因及解决办法 http://blog.csdn.net/zl_c/article/details/1742775 2 使用fr ...
- 神舟电脑文件丢失怎么办?分享文件丢失常见原因和恢复方法
我们都知道电脑品牌众多,而比较知名的电脑品牌有苹果.联想.华硕.宏碁.神舟等,但是不论是什么品牌的电脑出现文件丢失,都会给我们带来很多不必要的麻烦,那么神舟电脑文件丢失怎么恢复呢?这里给大家分享神舟电 ...
- sdhc卡文件丢失常见原因和两种恢复方法
sdhc卡作为sd卡的继任者,主要有容量/速度等级高.支持文件格式和兼容的机器多等特征,通常被用于存储大量文件的设备中,比如松下照相机.但是sdhc卡跟其他存储设备相似,也会因各种原因导致重要数据丢失 ...
最新文章
- Asp.net下实现隐藏真实下载地址(可以实现简单的防盗链)
- 昨晚,周杰伦新歌《说好不哭》一夜赚了1000万!
- Android开源框架——内存泄漏检测工具 LeakCanary
- yii2框架的安装配置启动
- python 之 linecache 用法记录
- ea 备份码是什么_EA的原始访问是什么,值得吗?
- 脉冲宽度调制pdm_PWM (脉冲宽度调制)原理与实现
- IT程序人生:学会写程序能从事哪些技术岗位?
- java处理xls_Java处理Excel文件
- C语言旅途之用for循环与break求最大素数(质数)
- C语言并集编程,c语言求并集和交集的关键代码,谢谢
- [Oracle] 自定义数据类型Type
- 美国TSCA 法案禁止产品中含有五种PBT 物质
- 怎么把电脑上的准考证发送到手机上呢
- springboot毕设项目交通违章管理系统58ig4(java+VUE+Mybatis+Maven+Mysql)
- Mybatis-原理总结
- 游戏:三子棋【 C语言 】
- ShaderJoy —— 多物体 Raymarching (图形拼接 + 地面投影)入门 【GLSL】
- sourceInsight4 破解笔记
- 2021年裂解(裂化)工艺及裂解(裂化)工艺模拟考试题库
热门文章
- mysql并发更新数据,多用户并发修改数据解决方案。
- C++核心编程(四)--文件操作
- Kafka史上最详细原理总结 ----看完绝对不后悔
- 一站式智能芯片定制技术
- NVIDIA深度学习Tensor Core性能解析(下)
- Android的数据存储方式
- 2021年大数据Kafka(三):❤️Kafka的集群搭建以及shell启动命令脚本编写❤️
- 2021年大数据Flink(四十五):​​​​​​扩展阅读 双流Join
- 2021年大数据Spark(五十一):Structured Streaming 物联网设备数据分析
- HTTP/HTTPS抓包工具-Fiddler