介绍

dlog是用GO语言实现的一个简单高效、支持文件轮换以及日志分级的日志SDK。其特征如下:

  • 采用文件日志类型采用了内存缓存,满足高性能输出日志。
  • 支持日志分级,具体分级如下:
    • fatal (log.LOG_FATAL)
    • error (log.LOG_ERROR)
    • warn (log.LOG_WARN)
    • info (log.LOG_INFO)
    • debug (log.LOG_DEBUG)
  • 支持终端日志类型以及可按照时间进行轮换的文件日志类型。
  • 文件日志类型支持按照天或小时进行轮换输出。

安装说明

go get github.com/haming123/wego/dlog去github.com下载

输出日志到终端

dlog的缺省日志类型为:TermLogger(终端日志类型),使用TermLogger时不需要初始化,可直接使用日志输出函数输出日志。

package main
import log "dlog"
func main()  {log.Debug("This is a Debug Message")log.Info("This is a Info Message")
}
//执行后的输出结果为:
//2021/11/30 07:20:06 [D] main.go:31 This is a Debug Message
//2021/11/30 07:20:06 [I] main.go:32 This is a Debug Info

日志级别

dlog支持5个日志级别,分别是:fatal、error、warn、info、debug。

package main
import log "dlog"
func main()  {log.Debug("This is Debug Message")log.Info("This is Info Message")log.Warn("This is Warn Message")log.Error("This is Error Message")log.Fatal("This is Fatal Message")
}

输出格式

dlog支持为每个级别的日志提供了一个xxxf、xxxJSON、xxxXML的函数,用于输出不同格式日志:

package main
import log "dlog"
func main()  {log.Debugf("This is a %s Message", "Debug")log.Infof("This is a %s Message", "Info")
}

输出JSON格式的日志:

package main
import log "dlog"
func main()  {type User struct {Name    stringAge   int}user := User{Name:"lisi", Age:12}log.DebugJSON(user)
}

输出XML格式的日志:

package main
import log "dlog"
func main()  {type User struct {Name    stringAge   int}user := User{Name:"lisi", Age:12}log.DebugXML(user)
}

设置JSON/XML的显示格式:

package main
import log "dlog"
func main()  {type User struct {Name    stringAge   int}user := User{Name:"lisi", Age:12}log.ShowIndent(true)log.DebugJSON(user)
}

使用Output输出日志

log.Output函数可以指定任意日志前缀输出日志:

package main
import log "dlog"
func main()  {log.Output("[SQL]", "This is SQL Message")log.Output("[DEBUG]", "This is Debug Message")
}

输出日志到文件

FileLogger是dlog提供的一种将日志输出到文件的日志类型。使用FileLogger日志类型前需要对FileLogger进行初始化,为FileLogger指定日志文件的存放目录以及日志文件的轮换方式。
日志文件可以按照天(log.ROTATE_DAY)或小时(log.ROTATE_HOUR)进行进行轮换。

package main
import log "dlog"
func main()  {log.InitFileLogger("./logs", log.LOG_DEBUG)defer log.Close()log.Debug("This is a Debug Message")log.Info("This is a Debug Info")
}

dlog为了提高日志组件的性能,采用了基于buffer的文件输出方式,因此在系统退出前需要调用Close()函数将buffer中的数据刷新到文件中。

关闭源码信息的输出

dlog缺省会在日志中输出源码所在的文件以及源码的行号,若不需要显示源码信息,可以使用函数:ShowCaller(show bool)来关闭源码信息的输出。

package main
import log "dlog"
func main()  {log.InitFileLoggerHour("./logs", log.LOG_DEBUG)log.ShowCaller(false)defer log.Close()log.Debug("This is a Debug Message")log.Info("This is a Debug Info")
}

性能指标

  1. 显示caller
goos: windows
goarch: amd64
BenchmarkFileLog
BenchmarkFileLog-6              983985          1079 ns/op          4 allocs/op
  1. 不显示caller
goos: windows
goarch: amd64
BenchmarkFileLogNoCaller
BenchmarkFileLogNoCaller-6       6514368        172.3 ns/op         0 allocs/op

高性能Go语言日志模块dlog使用说明相关推荐

  1. 微信终端跨平台组件 mars 系列(一) - 高性能日志模块xlog

    前言 mars 是微信官方的终端基础组件,是一个使用 C++ 编写的业务性无关,平台性无关的基础组件.目前已接入微信 Android.iOS.Mac.Windows.WP 等客户端.现正在筹备开源中, ...

  2. Android高性能日志模块-Xlog 正篇

    Android高性能日志模块-Xlog 前言 日志可以帮助我们定位问题,记录当前程序的运行状态.与后端开发不同的是,Android中的Log原生支持的仅是本地调试和信息记录,并不能很方便地定位远程问题 ...

  3. 整理:微信终端跨平台组件 mars 系列(一) - 高性能日志模块xlog

    学习网站:微信终端跨平台组件 mars 系列(一) - 高性能日志模块xlog 其中涉及知识: 垃圾回收机制 垃圾回收(garbage collection,简称GC)可以自动清空堆中不再使用的对象. ...

  4. 日志模块的C语言实现

    一,模块接口 模块接口比较简单,因为主要只有写日志的操作. 创建日志模块变量 log_t log_new(log_type_t type,const char *file, const char *f ...

  5. go语言日志收集系统

    0.项目地址 完整项目的GitHub地址 https://github.com/taw19960426/learning-go-language/tree/main/go-log-collect 一. ...

  6. python日志模块_Python之日志处理(logging模块)

    转载自:https://www.cnblogs.com/yyds/p/6901864.html 本节内容 日志相关概念 logging模块简介 使用logging提供的模块级别的函数记录日志 logg ...

  7. pycharm console日志如何输出到txt_Django实战2-自动化运维之配置管理-04:知识扩展-logging日志模块...

    日志在程序开发中是非常重要的.在生产环境下,通过日志我们可以查看程序错误信息,处理程序异常.Django利用了python提供的logging模块来记录系统日志. 本节内容参考自Django官方文档, ...

  8. python 日志输出为json格式文件_Py修行路 python基础 (二十一)logging日志模块 json序列化 正则表达式(re)...

    一.日志模块 两种配置方式:1.config函数 2.logger #1.config函数 不能输出到屏幕 #2.logger对象 (获取别人的信息,需要两个数据流:文件流和屏幕流需要将数据从两个数据 ...

  9. 极简系列|日志模块-clog

    日志作为应用程序调试和维护的基本手段被广泛使用,像是谷歌的glog,java领域的log4j,它们都是功能强大的大型日志中间件.可是,在特殊的领域,比如是嵌入式开发领域,由于资源的限制,可能不能直接应 ...

最新文章

  1. 【转】ASP.NET AJAX入门系列
  2. RabbitMQ基本概念(一)-RabbitMQ的优劣势及产生背景
  3. 【Python刷题】_2
  4. 利用matlab命令画出以下信号的波形,MATLAB实验报告
  5. 百度AI学习:一、语音识别
  6. 飞天茅台也可以在天猫上购买了,售价1499元!
  7. 移动**21*设置无法接通_手机通话质量不好?你可能只差一步设置!
  8. 免费的自媒体原创度检测工具有哪些?快速帮你提高系统推荐
  9. 给予树莓派的linux登陆密码,新手教程:如何 SSH 进入树莓派
  10. KDD 2022论文合集(持续更新中)
  11. 连接宽带提示服务器无响应,宽带拨号上网服务器无响应是怎么回事
  12. CentOS6启用密钥登陆
  13. 量子计算机的算力是多少,量子计算机算力有多强?可能是无数平行宇宙中的计算机在同时计算...
  14. requests爬虫搜狗微信公众号
  15. Kafka3.x详细笔记
  16. linux resolv.conf 重启,Ubuntu关于修改resolv.conf重启失效的问题
  17. 如何设置无线路由连接无线wifi
  18. 人工智能里你不知道的那些事!所有人都感兴趣的文章
  19. 异步四位二进制计数器逻辑图
  20. Policy Evaluation收敛性、炼丹与数学家

热门文章

  1. 微信小程序 | 吐血整理的日历及日程时间管理
  2. unionall的用法(当某条记录为空时,union all是否可以合并此条记录)
  3. Python 抽取剔除视频帧工具
  4. C++标准库(第二版).pdf与STL源码剖析.pdf下载
  5. 项目经理必备的可视化管理工具
  6. win10链接无线打印服务器,大师给您说win10系统连接惠普6960无线打印机的解决门径...
  7. qt实现sqlite数据库文件与csv文件相互转换
  8. 从零开始实现实时多人点歌机器人 (来自网易云音乐)
  9. java企业考勤,基于jsp的企业员工考勤-JavaEE实现企业员工考勤 - java项目源码
  10. android游戏特效,直播中送礼物短音效实现(支持网络,本地,assets)