Repolode
Cysharp

Cysharp/ZLogger

面向 .NET 与 Unity 的零分配文本及结构化日志库,基于 Microsoft.Extensions.Logging 构建,直接输出 UTF8。

Star
1,789
Fork
130
未关闭 Issue
5
最近提交
3天前

这是什么?

ZLogger 是一个用于 .NET 和 Unity 的日志库,基于 Microsoft.Extensions.Logging 构建。它使用 C# 字符串插值作为日志消息语法,并直接以 UTF8 格式写入控制台、文件、流或自定义处理器,避免了常见字符串型日志库中 UTF16 到 UTF8 的转换开销。

它同时支持纯文本、JSON 和 MessagePack 结构化输出,可为参数命名、将对象以 JSON 形式输出,并自定义键名与时间戳格式。内置 Console、File、RollingFile、Stream 和 InMemory 等输出方式,批处理处理器可用于通过 HTTP 发送日志。[ZLoggerMessage] 特性的源生成器可生成编译期日志方法,并借助 System.Text.Json 源生成支持 Native AOT。

该库兼容 .NET Standard 2.0 及以上版本,在 .NET 8 及更高版本上性能最佳。

核心功能

  • 01日志消息使用 C# 字符串插值语法,参数自动作为结构化属性记录。
  • 02直接输出 UTF8 内容,减少字符串编码开销。
  • 03支持纯文本、JSON 和 MessagePack 格式输出。
  • 04提供 Console、File、RollingFile、Stream 和 InMemory 等输出方式。
  • 05包含源生成器,可在编译期生成 ZLoggerMessage 日志方法。
  • 06通过标准日志构建器与 ASP.NET Core 和 Generic Host 集成。

适用场景

  • 在容器化或云原生的 .NET 服务中输出大量控制台日志。
  • 将结构化 JSON 日志写入文件或云端日志管道。
  • 在 .NET 应用中按日期或大小滚动写入日志文件。
  • 在 Unity 项目中使用相同 API 记录日志。

快速上手

  1. 1

    通过 NuGet 安装 ZLogger 包

    dotnet add package ZLogger
  2. 2

    在 ASP.NET Core 启动代码中清除默认日志提供程序并添加 ZLogger 控制台提供程序

收录于专题

标签

#logging#dotnet#csharp#structured-logging#zero-allocation#utf8#source-generator

常见问题

ZLogger 是什么?
面向 .NET 与 Unity 的零分配文本及结构化日志库,基于 Microsoft.Extensions.Logging 构建,直接输出 UTF8。 ZLogger 是一个用于 .NET 和 Unity 的日志库,基于 Microsoft.Extensions.Logging 构建。它使用 C# 字符串插值作为日志消息语法,并直接以 UTF8 格式写入控制台、文件、流或自定义处理器,避免了常见字符串型日志库中 UTF16 到 UTF8 的转换开销。
ZLogger 可以免费使用吗?用的什么许可证?
ZLogger 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
ZLogger 还在维护吗?
活跃维护中。ZLogger 最近一次提交是在 2026年11月4日。
ZLogger 适合用来做什么?
在容器化或云原生的 .NET 服务中输出大量控制台日志。 将结构化 JSON 日志写入文件或云端日志管道。 在 .NET 应用中按日期或大小滚动写入日志文件。 在 Unity 项目中使用相同 API 记录日志。
ZLogger 怎么安装和运行?
通过 NuGet 安装 ZLogger 包: dotnet add package ZLogger 在 ASP.NET Core 启动代码中清除默认日志提供程序并添加 ZLogger 控制台提供程序
在哪里获取 ZLogger?
源代码和安装说明在 GitHub 上:https://github.com/Cysharp/ZLogger

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目