高性能日志库 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 会持续进行优化和维护,包括功能与性能.

测试程序


相關推薦

2024-08-10

果分析 日志记录库和方法: Zap:这是一个uber开发的高性能日志库。 Logger:go-logger日志库。 Native Go Log: Go 内置的 log 包。 Slog:这是 Go 1.19 引入的新标准日志库。 Slog 和 Logger 结合:指同时使用go-logger作为slog

2024-10-31

go-logger 是一个高性能的golang日志库,旨在提供快速、轻量级的日志记录功能 Github 使用文档 v0.27.0 更新内容 优化内存分配 优化写数据性能 增加日志属性自定义函数 增加各个日志级别格式化打印函数 说明 性能

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 手机界面 电脑遥控器 按键反馈

2024-05-29

如果是格式化日志输出,则为4µs/op以上。(可以参考《 高性能日志库go-logger v2.0.3》中对各日志库的压测数据)。 在异步场景中,tklog提供了对应的方法,支持异步调用。异步方法最大的好处并非在性能上,而是它不会阻塞所在

2023-04-03

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

2024-07-26

utool   前端技术栈:vue3+vue-router+typescript+elementui 更新日志 v2.0.5 新增:系统日志添加‘接口路径’保存字段 新增:系统日志添加@LogPersistence注解拦截存储 优化:系统日志查询列表默认根据id倒叙 优化:创建Logger实例

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 修复版本,此版本带来若干修复

2024-06-04

tklog是rust高性能结构化日志库,支持同步日志,异步日志,支持自定义日志的输出格式,支持按时间,按文件大小分割日志文件,支持日志文件压缩备份,支持官方日志库标准API tklog 0.0.3版本主要更新 tklog实现了官方Log接