1. 描述

这个 repository 是从 alecthomas 的 log4go 重构而来的,log4go 是一个类似于用于 Java 编程语言的 log4j 的日志包。源于 Google 的一项 log 工程,官方已经停止维护更新。

仓库地址:

https://github.com/jeanphorn/log4go.git

2. 特点

  • 日志输出到终端
  • 日志输出到文件,支持按大小和时间切片
  • 日志输出到网络
  • 日志异步输出
  • 支持 json 文件配置
  • 日志分类
    • 不同类别的日志,输出到不同的printer中.
  • 兼容老的日志方式

3. 使用示例

  1. 下载源码
go get github.com/jeanphorn/log4go
  1. 导入进工程
import log "github.com/jeanphorn/log4go"
  1. 具体步骤,请查看

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 库

  1. https://github.com/hhkbp2/go-logging.git
  2. https://github.com/cihub/seelog

参考:

  1. https://stackoverrun.com/cn/q/3852638
  2. https://www.v2ex.com/amp/t/239039

golang log4go 使用说明及丢失日志原因相关推荐

  1. Session莫名丢失的原因及解决办法[转载]

    Asp.net 默认配置下,Session莫名丢失的原因及解决办法 正常操作情况下Session会无故丢失.因为程序是在不停的被操作,排除Session超时的可能.另外,Session超时时间被设定成 ...

  2. ASP.NET Session丢失问题原因及解决方案[转]

    不得不老调重弹 正常操作情况下会有ASP.NET Session丢失的情况出现.因为程序是在不停的被操作,排除Session超时的可能.另外,Session超时时间被设定成60分钟,不会这么快就超时的 ...

  3. Android学习——R文件丢失异常原因汇总

    Console报错:R.java was modified manually! Reverting to generated version! 引言: R文件丢失异常在java开发中是个比较常见的异常 ...

  4. android r文件错误,Android R文件丢失异常原因汇总

    Console报错:R.java was modified manually! Reverting to generated version! 引言: R文件丢失异常在java开发中是个比较常见的异常 ...

  5. Hyper-V下的Linux虚拟机网卡丢失问题原因及解决办法

    Hyper-V下的Linux虚拟机网卡丢失问题原因及解决办法 虚拟化大势所趋 公司推行了虚拟化,全部用的是Microsoft Windows 2008 R2 Enterprise with Hyper ...

  6. mouseup 左键_javascript中mouseup事件丢失的原因与解决办法

    这篇文章主要跟大家介绍了关于Javascript中mouseup事件丢失的原因与解决办法的相关资料,文中给出详细的示例代码供大家参考学习,需要的朋友们下面跟着小编一起来学习学习吧. 前言 当实现类似E ...

  7. Frameset导致Cookies和Session丢失的原因及解决办法

    参考资料 1 Frameset导致Cookies和Session丢失的原因及解决办法 http://blog.csdn.net/zl_c/article/details/1742775  2 使用fr ...

  8. 神舟电脑文件丢失怎么办?分享文件丢失常见原因和恢复方法

    我们都知道电脑品牌众多,而比较知名的电脑品牌有苹果.联想.华硕.宏碁.神舟等,但是不论是什么品牌的电脑出现文件丢失,都会给我们带来很多不必要的麻烦,那么神舟电脑文件丢失怎么恢复呢?这里给大家分享神舟电 ...

  9. sdhc卡文件丢失常见原因和两种恢复方法

    sdhc卡作为sd卡的继任者,主要有容量/速度等级高.支持文件格式和兼容的机器多等特征,通常被用于存储大量文件的设备中,比如松下照相机.但是sdhc卡跟其他存储设备相似,也会因各种原因导致重要数据丢失 ...

最新文章

  1. Asp.net下实现隐藏真实下载地址(可以实现简单的防盗链)
  2. 昨晚,周杰伦新歌《说好不哭》一夜赚了1000万!
  3. Android开源框架——内存泄漏检测工具 LeakCanary
  4. yii2框架的安装配置启动
  5. python 之 linecache 用法记录
  6. ea 备份码是什么_EA的原始访问是什么,值得吗?
  7. 脉冲宽度调制pdm_PWM (脉冲宽度调制)原理与实现
  8. IT程序人生:学会写程序能从事哪些技术岗位?
  9. java处理xls_Java处理Excel文件
  10. C语言旅途之用for循环与break求最大素数(质数)
  11. C语言并集编程,c语言求并集和交集的关键代码,谢谢
  12. [Oracle] 自定义数据类型Type
  13. 美国TSCA 法案禁止产品中含有五种PBT 物质
  14. 怎么把电脑上的准考证发送到手机上呢
  15. springboot毕设项目交通违章管理系统58ig4(java+VUE+Mybatis+Maven+Mysql)
  16. Mybatis-原理总结
  17. 游戏:三子棋【 C语言 】
  18. ShaderJoy —— 多物体 Raymarching (图形拼接 + 地面投影)入门 【GLSL】
  19. sourceInsight4 破解笔记
  20. 2021年裂解(裂化)工艺及裂解(裂化)工艺模拟考试题库

热门文章

  1. mysql并发更新数据,多用户并发修改数据解决方案。
  2. C++核心编程(四)--文件操作
  3. Kafka史上最详细原理总结 ----看完绝对不后悔
  4. 一站式智能芯片定制技术
  5. NVIDIA深度学习Tensor Core性能解析(下)
  6. Android的数据存储方式
  7. 2021年大数据Kafka(三):❤️Kafka的集群搭建以及shell启动命令脚本编写❤️
  8. 2021年大数据Flink(四十五):​​​​​​扩展阅读 双流Join
  9. 2021年大数据Spark(五十一):Structured Streaming 物联网设备数据分析
  10. HTTP/HTTPS抓包工具-Fiddler