高性能日志库 go-logger v2.0.3 发布


go-logger v2.0.3发布,该版本主要针对性能进行优化.  github地址:https://github.com/donnie4w/go-logger 

go的结构化日志库非常多,go-logger是比较早期开发的一个库, 以简洁为主要特征。simplelog是后期给数据库binlog日志开发的一个日志库,由于功能与go-logger有重合,就把两个库的代码就合并了。目前两个库代都会一起更新,实现是一致的。

go1.21版本就在标准库加上结构化日志库log/slog,该日志库性能非常优越,根据压测结果,slog的性能要比社区常用的第三方结构化日志库好许多,所以大部分项目日志库可以直接使用slog。

go-logger 将继续维护,原因是:

  1. go-logger 比slog占用更少的内存,效率比slog更高
  2. go-logger 对日志文件处理,如 日志文件按大小切分备份,按日期:月,日,时切分备份,日志文件压缩备份,日志文件限制最大文件数等特性,目前slog还不具备这些特征。

go-logger 函数文档


性能测试数据:

输出数据:

2023-09-30T17:37:15.008+0800DEBUG logtest/benchmark_test.go:103 >>>aaaaaaaaaaaaaaaaaaaaaaaaaaaaa
[DEBUG]2023/09/30 17:37:19 benchmark_test.go:115: >>>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
[DEBUG]2023/06/10 01:25:55.028277 log_test.go:46:>>>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
[DEBUG]2023/06/10 01:25:55.028277 log_test.go:55:>>>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
time=2023-09-30T17:37:38.395+08:00 level=INFO source=benchmark_test.go:164 msg=>>>aaaaaaaaaaaaaaaaaaaaaaa

参数说明:

  • ns/op: 每执行一次消耗的时间
  • B/op:每执行一次消耗的内存
  • allocs/op:每执行一次分配内存次数

结果说明:

  1. 不同日志库输出的数据大小是一致的
  2. Zap:uber 官方go日志库,测试中是 常规格式(包含文件名行号) debug日志输出
  3. Logger:go-logger  测试中是 常规格式(包含文件名行号) debug日志输出
  4. LoggerNoFORMAT:  为go-logger去格式化日志输出
  5. LoggerWrite:  为go-logger提供的原始数据高速写入文件的方法,原是 simplelog 高效输出数据库binlog日志数据的方法
  6. Slog:官方 log/slog  测试为常规格式(包含文件名行号)info 日志输出

可以看到 测试数据

  • 时间消耗: go-logger 4500ns/op左右 ,   slog与zap大致在5600ns/op 左右
  • 内存消耗:go-logger 64B   ,     slog与zap大致在330ns/op 左右    
  • 不同机器跑测试程序会有不同的结果,这个主要是一个比较作用。

测试结果:

  1. 性能      :  go-logger  >  slog  ≥  zap
  2. 内存消耗 : go-logger 远小于  slog 与 zap

说明:go-logger 性能与内存上的优势,主要归功于其内存使用上的优化


多次测试结果:

对比可知,不同时间测试结果都相似

  • 可以看到,这几个日志库的性能都非常高。可以根据项目的实际需求选择使用任一日志库。
  • 如果对性能与内存要求苛刻或对日志文件备份处理有要求时, 建议使用go-logger
  • 如果官方日志库slog已经能满足项目需求,建议使用slog,由官方维护的库总是靠谱的;对于一般业务来说:性能4500ns/op与5600ns/op 并无实质区别。
  • go-logger 会持续进行优化和维护,包括功能与性能.

测试程序


相關推薦

2023-05-15

go-logger 是golang 的极简日志库 日志打印:调用 Debug(),Info(),Warn(), Error() ,Fatal() 日志级别由低到高 级别概念 功能用法类似java日志工具log4j 或 python的logging 设置日志打印格式: 如: SetFormat(FORMAT_SHORTFILENAME|FORMAT_DATE|FORMA

2022-09-15

够强大的功能: 命令行参数与配置文件解析库(flag) 高性能日志库(log) 单元测试框架(unitest) go-style 协程 基于协程的网络编程框架 高效 JSON 库 基于 JSON 的 RPC 框架 面向玄学编程 原子操作(atomic) 随机数生成器(random

2023-10-27

应用场景,让百灵快传更好用。 1. 百灵快传 v2.0.3 更新日志 优化一些列功能体验和界面显示 支持向主电脑发送键盘和鼠标指令(主电脑为windows系统) 专用手机App 手机界面 电脑遥控器 按键反馈

2023-04-03

Typing Learner v2.0.3 已经发布,Kotlin 编写的背单词软件 此版本更新内容包括: Typing Learner 2.0 换名字了,新版的名字为:幕境。 新版的UI做了很大的调整,删除了一些不常用的快捷键。 新增功能 视频播放器,以弹幕的形式复

2023-12-06

辑 by @aringlai in #17 Full Changelog: v2.0.2...v2.0.3

2023-07-11

CXYGZL 介绍 现在开源的工作流引擎,基本都是以 BPMN.js 为基础的,导致使用门槛过高,非专业人员无法驾驭。本工作流借鉴钉钉 / 飞书的方式,以低代码方式降低用户使用门槛,即使是普通企业用户也可以几分钟内就能搭建自己

2023-02-10

Snowy-Cloud(SnowyAdmin 微服务版)是国内首个国密前后端分离快速开发平台,集成国密加解密插件, 软件层面完全符合等保测评要求,同时实现国产化机型、中间件、数据库适配,是您的不二之选! 技术框架与密码结合,让更多的

2022-09-20

一、简介 mica-mqtt 基于 t-io 实现的简单、低延迟、高性能 的 mqtt 物联网开源组件。mica-mqtt 更加易于集成到已有服务和二次开发,降低自研物联网平台开发成本。 二、功能 支持 MQTT v3.1、v3.1.1 以及 v5.0 协议。 支持 websocket

2023-01-09

洛雪音乐助手是一个功能强大、音乐齐全、操作简单的音乐播放器,支持导入其他主流音乐播放器的歌单、支持多设备同步功能,可在 Windows、MacOS、Linux 平台运行。 目前洛雪音乐更新了 2.0.3 修复版本,此版本带来若干修复

2023-07-13

台模板、提升效率的主题配置系统。 新发布项目二:高性能服务网格—Kmesh 服务网格作为云原生的下一代技术,已逐步成为云上基础设施标配,但其sidecar架构存在性能问题,是当前网格技术推广的关键;Kmesh高性能服务网

2023-12-09

体参见 4.0.6 milestone 🐛 bug #76 post 请求,显示日志的时候,full url没有包含请求参数部分 [feilong-servlet] 说明: 相关日志,从直接使用request queryString,改成解析请求参数拼接 👽 不兼容 #643 ✨ PartitionThreadConfig 默认

2023-06-03

nbsp;智能扫描支持从 MySQL 实例在线抓取慢 SQL 在原先的慢日志扫描任务中,创建扫描任务后,还需进入终端配置scannerd 进程,扫描任务配置流程相对较长。本次优化使得 sqle 可以直接从慢日志表中采集数据,避免用户进入终端操

2023-08-29

,支持告警屏蔽、告警抑制、告警自愈、告警事件管理 高性能可视化引擎:支持多种图表样式,内置众多Dashboard模版,也可导入Grafana模版,开箱即用,开源协议商业友好 无缝搭配 Flashduty:实现告警聚合收敛、认领、升

2021-11-22

库的速度。 Clickhouse是面向海量数据实时、多维分析、高性能的新一代OLAP数据库管理系统,实现了向量化执行和SIMD指令,对内存中的列式数据,一个batch调用一次SIMD指令,大幅缩短了计算耗时,带来数倍的性能提升。目前已