博客
关于我
golang log4go 使用说明及丢失日志原因
阅读量:490 次
发布时间:2019-03-07

本文共 1353 字,大约阅读时间需要 4 分钟。

log4go 仓库描述

概述

log4go 是一个 Go 语言类似于 log4j 的日志包,源自 Google 的一次日志工程,现由社区维护。它通过重构 log4go 已停止更新,成为开发者日志记录的有力选择。

核心功能

  • 多输出方式:日志可输出到终端、文件或网络。
  • 高效处理:支持按大小和时间切片日志文件。
  • 异步输出:确保日志处理不阻塞主程序。
  • 配置灵活:支持 JSON 格式配置,便于定制。
  • 场景分类:不同类型日志可指定独立的打印方式。
  • 兼容性强:支持传统日志处理方式,便于升级。

使用示例

快速开始

go get github.com/jeanphorn/log4go

简单集成

import log "github.com/jeanphorn/log4go"var (    loggers log.Logger)func init() {    loggers = log.NewLogger(log.INFO)}

详细配置

package mainimport (	"log4go"	"time")var (    loggers *log4go.Logger)func init() {    loggers = log4go.NewLogger(log4go.INFO)    // 配置日志输出至文件    fileWriter := log4go.NewFileLogWriter("log/app.log", false, false)    fileWriter.SetFormat("[%D %T] [%L] (%S) %M")    fileWriter.SetRotate(true)    fileWriter.SetRotateSize(10 << 20)  // 10M字节    fileWriter.SetRotateMaxBackup(10)   // 保留10个备份文件    fileWriter.SetRotateDaily(false)     // 不按天切片    fileWriter.SetSanitize(true)    loggers.AddFilter("app", log4go.INFO, fileWriter)}

常见问题

日志输出问题

运行后发现本地文件中无日志生成,原因在于 log4go 采用 channel 暂存策略,打印日志的 goroutine 可能因主 goroutine 键合后立即退出而无法完成任务。解决方法是确保主 goroutine 等待打印完成。

解决方案

在代码末尾添加 sleep 时间,确保打印 goroutine 得到足够执行时间。

func main() {    initLog("test.log")    log.Error("这是一个错误消息")    time.Sleep(100 * time.Microsecond)    log.Info("这是一个信息消息")    time.Sleep(100 * time.Microsecond)}

其他建议

考虑其他日志库选择?您可能忽略了很多关于性能和可靠性的细节。log4go 已经被证明可以胜任大型应用场景,且有活跃的开发者社区来支持。

转载地址:http://ckkjz.baihongyu.com/

你可能感兴趣的文章
Huffman树及其编解码
查看>>
分布式、高并发、高性能场景(抢购、秒杀、抢票、限时竞答)数据一致性解决方案
查看>>
淘宝镜像
查看>>
20.波利亚过程
查看>>
04_Mysql配置文件(重要参数)
查看>>
浅谈使用git进行版本控制
查看>>
python 序列化及其相关模块(json,pickle,shelve,xml)详解
查看>>
python 加密算法及其相关模块的学习(hashlib,RSA,random,string,math)
查看>>
深入学习Tesseract-ocr识别中文并训练字库的方法
查看>>
js编写动态时钟
查看>>
JavaSE总结
查看>>
Consul安装使用
查看>>
手动造轮子——基于.NetCore的RPC框架DotNetCoreRpc
查看>>
Python IO编程
查看>>
CSS入门总结
查看>>
Django内置的响应类
查看>>
使用 TortoiseGit 时,报 Access denied 错误
查看>>
创建Silverlight 5浏览器内受信应用
查看>>
基于 HTML5 WebGL 的污水处理厂泵站自控系统
查看>>
java _this关键字的用法
查看>>