Go-Spring :: Log v0.0.1 发布,基于 Tag 路由的结构化日志库
Go-Spring :: Log 是一个高性能、可扩展的日志处理库,专为 Go 语言设计。它提供了灵活的日志记录功能,支持结构化日志、 上下文字段提取、多级日志配置以及多种输出方式,适用于各种服务端应用场景。
特性
-
多级日志支持:提供 Trace, Debug, Info, Warn, Error, Panic, Fatal 等日志级别,满足不同场景下的调试和监控需求。
-
结构化日志:支持以结构化的方式记录日志字段(如
trace_id
,span_id
),便于日志分析系统解析。 -
上下文支持:通过
context.Context
提取额外信息(如请求 ID、用户 ID)并自动附加到日志中。 -
标签系统:使用标签(Tag)机制区分不同模块或业务线的日志。
- 插件机制:
-
Appender:支持多种日志输出方式,包括控制台输出(Console)、文件写入(File)等。
-
Layout:提供文本格式(Text)和 JSON 格式(JSON)两种日志布局方式。
-
Logger:支持同步和异步日志记录器,异步记录器可防止日志写入阻塞主线程。
-
-
性能优化:提供缓冲区管理、事件池化(Event Pooling)以减少内存分配开销。
-
日志刷新:支持从配置文件动态刷新日志设置,方便运行时调整日志行为。
-
测试完备:所有核心模块均配有单元测试,确保稳定性和可靠性。
安装
go get github.com/go-spring/log
快速开始
以下是一个简单的示例,展示如何使用 Go-Spring :: Log 记录日志:
package main
import (
"context"
"github.com/go-spring/log"
)
func main() {
// 设置上下文字段提取函数
log.FieldsFromContext = func(ctx context.Context) []log.Field {
return []log.Field{
log.String("trace_id", "0a882193682db71edd48044db54cae88"),
log.String("span_id", "50ef0724418c0a66"),
}
}
// 加载配置文件
err := log.RefreshFile("log.xml")
if err != nil {
panic(err)
}
ctx := context.Background()
// 记录日志
log.Infof(ctx, log.TagDef, "This is an info message")
log.Errorf(ctx, log.TagBiz, "This is an error message")
}
配置说明
Go-Spring :: Log 支持通过 XML 配置文件定义日志行为,例如:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Properties>
<Property name="LayoutBufferSize">100KB</Property>
</Properties>
<Appenders>
<Console name="console">
<JSONLayout bufferSize="${LayoutBufferSize}"/>
</Console>
</Appenders>
<Loggers>
<Root level="warn">
<AppenderRef ref="console"/>
</Root>
<Logger name="logger" level="info" tags="_com_request_*">
<AppenderRef ref="console"/>
</Logger>
</Loggers>
</Configuration>
插件开发
Go-Spring :: Log 提供了丰富的插件接口,开发者可以轻松实现自定义的 Appender、Layout 和 Logger。
许可证
Go-Spring :: Log 使用 Apache License 2.0 许可证发布。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Bun v1.2.16 发布,内存优化,兼容提升,体验增强
大家好,我是农村程序员,独立开发者,编程记者,前端之虎陈随易。 我会在这里分享代码技术,编程资讯,行业热点等内容,欢迎关注。 个人网站 1️⃣:https://chensuiyi.me 个人网站 2️⃣:https://me.yicode.tech 技术群,搞钱群,闲聊群,自驾群,想入群的在我个人网站联系我。 所有文章都是古法手打,经过了深度思考和总结,不含 AI 添加剂,请放心食用,一起灵魂交流。 一键三连 (点赞、评论、转发),可以给我提供曝光,带来一份早餐收入,谢谢大家~~ VSCode v1.101 和 Bun v1.2.16 的发布我看都没人其他人分享啊?看来我这个 编程记者 得好好地坚守岗位才行。 我是 All in Bun 玩家,截至现在不用 Node.js 已经半年有余,一切感觉良好,有小伙伴测试了下性能,确实比 Node.js 快了不少。 那么本次的 v1.2.16 版本,同样带来一些性能的提升,内存的优化等,让我们来一起看看具体的更新内容吧。 数据总览 本次一共解决了 73 个 issue,新增了 119 个能成功通过的 Node.js 兼容性测试。 在 Bun.s...
- 下一篇
Snow 编程语言 v0.3.0 发布
更新内容 新特性 支持一元逻辑取反 !x 支持一元数值取反 -x 比较运算符(>, <, >=, <=, ==, !=)统一返回 boolean 完善 AST JSON 序列化输出 修复 解决 LXorCommand 可能被截断的问题 补齐 end function 后的空行,防止解析异常 修正取反运算的类型推断错误 消除自我赋值时的冗余移动指令 重构 核心实体类改为 Java record 清理未使用的模式变量 如遇到使用问题,欢迎及时 提交 Issue
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS7设置SWAP分区,小内存服务器的救世主
- Hadoop3单机部署,实现最简伪集群