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 许可证发布。

 


相關推薦

2025-05-03

🎉 很高兴宣布 Go-Spring 全新版本正式发布! 这是一个融合了 Java Spring 生态成熟理念 🌱 与 Go 语言高性能特性 ⚡ 的现代框架, 旨在为 Go 开发者 👨 💻👩 💻 提供更高效、更优雅的应用开发体验 ✨。 🌟 框架简介 Go-Spring 是

2024-05-29

使用时的实际最新版本;当前0.0.2版本 tklog是rust高性能结构化日志库 易用,高效,结构化,控制台日志,文件日志,文件切割,文件压缩,同步打印,异步打印 功能 功能支持:控制台日志,文件日志,同步日志,异步

2024-08-27

tklog是rust高性能结构化日志库 易用,高效,结构化,控制台日志,文件日志,文件切割,文件压缩,同步打印,异步打印 功能 功能支持:控制台日志,文件日志,同步日志,异步日志 日志级别设置:提供与标准库同级

2024-06-04

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

2024-10-19

tklog是rust高性能结构化日志库,支持同步日志,异步日志,支持自定义日志的输出格式,支持按时间,按文件大小分割日志文件,支持日志文件压缩备份,支持官方日志库标准API,支持mod独立参数设置,支持日志level独立参数

2023-10-09

 github地址:https://github.com/donnie4w/go-logger  go的结构化日志库非常多,go-logger是比较早期开发的一个库, 以简洁为主要特征。simplelog是后期给数据库binlog日志开发的一个日志库,由于功能与go-logger有重合,就把两个库的

2024-10-23

tklog是rust高性能结构化日志库,支持同步日志,异步日志,支持自定义日志的输出格式,支持按时间,按文件大小分割日志文件,支持日志文件压缩备份,支持官方日志库标准API,支持mod独立参数设置,支持日志level独立参数

2024-10-01

tklog是rust高性能结构化日志库,支持同步日志,异步日志,支持自定义日志的输出格式,支持按时间,按文件大小分割日志文件,支持日志文件压缩备份,支持官方日志库标准API,支持mod独立参数设置,支持日志level独立参数

2024-06-22

tklog是rust高性能结构化日志库,支持同步日志,异步日志,支持自定义日志的输出格式,支持按时间,按文件大小分割日志文件,支持日志文件压缩备份,支持官方日志库标准API,支持mod独立参数设置 tklog相关信息 官网

2022-09-14

距离上次发版仅两周的时间,Go 后端一站式开发框架 Go-Spring 又发布了新的版本,新版本实现了两个非常重要的特性:动态配置和 Bean 共享。 动态配置 有时候我们想要在不停机的情况下可以修改程序的配置,更改程序的行为,

2023-03-25

存储引擎、日志引擎、Kube等。 2022年1月,PolarDB-X 正式发布 2.0.0 版本,继 2021 年 10 月 20 号云栖大会正式开源后的第一次版本更新,更新内容包括新增集群扩缩容、以及binlog生态兼容等特性,兼容 maxwell 和 debezium 增量日志订阅

2025-05-15

go-mir v5.0.1 发布了,v5 版本带来全新的 RESTful API 开发方式,提供媲美 gRPC 服务开发的体验,方便快捷,欢迎使用。 ​Mir 是一套提供类似 gRPC 服务开发体验的快速开发 RESTful API 后端开发脚手架,适配多种 HTTP 框架,包括 Gin

2023-05-16

架。  更多介绍,请见官网:https://therouter.cn 本次发布 1.1.3 版本,更新如下: feature: @ActionInterceptor 支持注释声明 feature: 路由跳转拦截器新增watch()方法,支持指定path生效,默认所有页面均生效 feature: 支持dyn

2023-01-09

go-mir v3.0.0 发布了,v3版本带来全新的RESTful API开发方式,提供媲美gRPC服务开发的体验,方便快捷,欢迎参考使用。 ​Mir 是一套提供类似gRPC服务开发体验的快速开发RESTful API后端开发脚手架,适配多种HTTP框架,包括Gin, Chi, Hert