Serilog.Formatting.Compact 3.0.0
前缀已保留
dotnet add package Serilog.Formatting.Compact --version 3.0.0
NuGet\Install-Package Serilog.Formatting.Compact -Version 3.0.0
<PackageReference Include="Serilog.Formatting.Compact" Version="3.0.0" />
paket add Serilog.Formatting.Compact --version 3.0.0
#r "nuget: Serilog.Formatting.Compact, 3.0.0"
// Install Serilog.Formatting.Compact as a Cake Addin #addin nuget:?package=Serilog.Formatting.Compact&version=3.0.0 // Install Serilog.Formatting.Compact as a Cake Tool #tool nuget:?package=Serilog.Formatting.Compact&version=3.0.0
Serilog.Formatting.Compact
为 Serilog 提供一个简单、紧凑的基于 JSON 的事件格式。与 Serilog 的默认 JsonFormatter
相比,CompactJsonFormatter
显著减少了小型日志事件的字节数,同时仍然可读。它通过较短的内置属性名称、更精简的格式以及排除冗余信息来实现这一点。
示例
一个简单的 Hello, {User}
事件。
{"@t":"2016-06-07T03:44:57.8532799Z","@mt":"Hello, {User}","User":"nblumhardt"}
入门
从 NuGet 安装
dotnet add package Serilog.Formatting.Compact
该格式化器与接受 ITextFormatter
的接收器一起使用。例如,文件 接收器
Log.Logger = new LoggerConfiguration()
.WriteTo.File(new CompactJsonFormatter(), "./logs/myapp.json")
.CreateLogger();
XML <appSettings>
配置
要在 XML <appSettings>
中指定格式化器,提供其程序集限定类型名
<appSettings>
<add key="serilog:using:File" value="Serilog.Sinks.File" />
<add key="serilog:write-to:File.path" value="./logs/myapp.json" />
<add key="serilog:write-to:File.formatter"
value="Serilog.Formatting.Compact.CompactJsonFormatter, Serilog.Formatting.Compact" />
JSON appsettings.json
配置
要在 appsettings.json
中指定格式化器,提供其程序集限定类型名
{
"Serilog": {
"WriteTo": [
{
"Name": "File",
"Args": {
"path": "./logs/myapp.json",
"formatter": "Serilog.Formatting.Compact.CompactJsonFormatter, Serilog.Formatting.Compact"
}
}
]
}
}
渲染的事件
CompactJsonFormatter
保留消息模板、属性和格式化信息,以便稍后创建渲染的消息。当 JSON 专为在无法渲染消息模板的环境中消费而设计时,可以使用 RenderedCompactJsonFormatter
。
与消息模板不同,RenderedCompactJsonFormatter
会将完全渲染的消息以及从消息模板生成的 事件 ID 写入事件中,该事件 ID 可在 此处生成。
{"@t":"2016-06-07T03:44:57.8532799Z","@m":"Hello, \"nblumhardt\"","@i":"7a8b9c0d","User":"nblumhardt"}
格式细节
紧凑格式化器写入的格式是通用的,以便在需要的情况下实现其他日志记录库的实现,包括 Microsoft.Extensions.Logging。
有效负载
每个事件都是一个包含事件数据的顶级 JSON 对象。有效负载对象上的任何 JSON 属性都假定为事件的常规属性,除了下面的具体属性之外。
具体属性
该格式定义了几个具有特殊意义的具体属性
属性 | 名称 | 描述 | 必需? |
---|---|---|---|
@t |
时间戳 | ISO 8601 时间戳 | 是 |
@m |
消息 | 描述事件的完全渲染的消息 | |
@mt |
消息模板 | 消息的替代方案;指定在事件的属性的消息模板,以提供渲染为事件文本描述的能力 | |
@l |
级别 | 特定的实现级别标识符(字符串或数字) | 缺失意味着“信息” |
@x |
异常 | 包含回溯的语言相关错误表示 | |
@i |
事件 ID | 特定的实现事件 ID(字符串或数字) | |
@r |
渲染 | 如果 @mt 包含编程语言特定的格式令牌,则为每个此类令牌提供预渲染值的数组 |
可能省略;如果存在,渲染次数必须与格式化令牌的次数完全匹配 |
@tr |
跟踪 ID | 事件创建时处于活动状态的跟踪 ID(如果有) | |
@sp |
跨度 ID | 事件创建时处于活动状态的跨度 ID(如果有) |
要使用户属性名称的开头具有转义符号 `@
`,请重复它,例如 @@name
表示名为 @name
的属性。
批量格式
当事件批量到一个单个的有效负载时,需要一个以换行符分隔的 JSON 文档流。可以使用 \n
或 \r\n
分隔符。使用新行分隔的紧凑 JSON 事件批可以使用的(非官方)MIME 类型是 application/vnd.serilog.clef
。
版本化
版本化只能是增量版本,没有版本标识符;实现应将任何未识别的具体属性视为用户数据。
比较
下面的输出和基准比较紧凑 JSON 格式化器与 Serilog 内置的 JsonFormatter
。
事件
Log.Information("Hello, {@User}, {N:x8} at {Now}",
new
{
Name = "nblumhardt",
Tags = new[] { 1, 2, 3 }
},
123,
DateTime.Now);
默认 JsonFormatter
292 字节
{"Timestamp":"2016-06-07T13:44:57.8532799+10:00","Level":"Information","MessageT
emplate":"Hello, {@User}, {N:x8} at {Now}","Properties":{"User":{"Name":"nblumha
rdt","Tags":[1,2,3]},"N":123,"Now":"2016-06-07T13:44:57.8532799+10:00"},"Renderi
ngs":{"N":[{"Format":"x8","Rendering":"0000007b"}]}}
CompactJsonFormatter
187 字节(0.64)
{"@t":"2016-06-07T03:44:57.8532799Z","@mt":"Hello, {@User}, {N:x8} at {Now}","@r
":["0000007b"],"User":{"Name":"nblumhardt","Tags":[1,2,3]},"N":123,"Now":2016-06
-07T13:44:57.8532799+10:00}
格式化基准
请参阅 test/Serilog.Formatting.Compact.Tests/FormattingBenchmarks.cs
。
格式化器 | 中位数 | 标准差 | 缩放 |
---|---|---|---|
JsonFormatter |
11.2775 µs | 0.0682 µs | 1.00 |
紧凑型JsonFormatter |
6.0315 µs | 0.0429 µs | 0.53 |
JsonFormatter(renderMessage: true) |
13.7585 µs | 0.1194 µs | 1.22 |
渲染紧凑型JsonFormatter |
7.0680 µs | 0.0605 µs | 0.63 |
工具
有几种工具可用于处理CLEF格式。
- Analogy.LogViewer.Serilog - 用于Analogy Log Viewer的CLEF解析器
clef-tool
- 用于处理CLEF文件的命令行应用程序- 紧凑型日志格式查看器 - CLEF文件的跨平台查看器
seqcli
- 在命令行中格式化CLEF文件,或将CLEF文件导入Seq进行搜索和分析- Serilog.Formatting.Compact.Reader - 将CLEF文档转换回Serilog
LogEvent
自定义输出
Serilog.Formatting.Compact 不打算提供可自定义的格式化工具。请参阅此博客文章以获取全面的Serilog JSON输出自定义示例。
产品 | 版本 兼容以及额外的计算目标框架版本。 |
---|---|
.NET | net5.0 已计算。 net5.0-windows 已计算。 net6.0 兼容。 net6.0-android 已计算。 net6.0-ios 已计算。 net6.0-maccatalyst 已计算。 net6.0-macos 已计算。 net6.0-tvos 已计算。 net6.0-windows 已计算。 net7.0 已计算。 net7.0-android 已计算。 net7.0-ios 已计算。 net7.0-maccatalyst 已计算。 net7.0-macos 已计算。 net7.0-tvos 已计算。 net7.0-windows 已计算。 net8.0 兼容。 net8.0-android 已计算。 net8.0-browser 已计算。 net8.0-ios 已计算。 net8.0-maccatalyst 已计算。 net8.0-macos 已计算。 net8.0-tvos 已计算。 net8.0-windows 已计算。 |
.NET Core | netcoreapp2.0 已计算。 netcoreapp2.1 已计算。 netcoreapp2.2 已计算。 netcoreapp3.0 已计算。 netcoreapp3.1 已计算。 |
.NET Standard | netstandard2.0 兼容。 netstandard2.1 已计算。 |
.NET Framework | net461 已计算。 net462 兼容。 net463 已计算。 net47 已计算。 net471 兼容。 net472 已计算。 net48 已计算。 net481 已计算。 |
MonoAndroid | monoandroid 已计算。 |
MonoMac | monomac 已计算。 |
MonoTouch | monotouch 已计算。 |
Tizen | tizen40 已计算。 tizen60 已计算。 |
Xamarin.iOS | xamarinios 已计算。 |
Xamarin.Mac | xamarinmac 已计算。 |
Xamarin.TVOS | xamarintvos 已计算。 |
Xamarin.WatchOS | xamarinwatchos 已计算。 |
NuGet 包 (210)
显示依赖于 Serilog.Formatting.Compact 的前 5 个 NuGet 包
包 | 下载 |
---|---|
Serilog.AspNetCore Serilog 支持 ASP.NET Core 日志记录 |
|
Serilog.Sinks.Elasticsearch
Serilog 的 Elasticsearch 沉甸甸 |
|
Serilog.Extensions.Logging.File 使用一行代码将文件记录添加到 ASP.NET Core 应用 |
|
Umbraco.Cms.Infrastructure 包含运行 Umbraco CMS 所需的基础设施组件 |
|
UmbracoCms.Core 包含运行 Umbraco Cms 所需的核心组件。此包仅包含组件,可用于包开发。使用 UmbracoCms 包在 Visual Studio 中将 Umbraco 设置为 ASP.NET 项目。 |
GitHub 仓库 (51)
显示依赖Serilog.Formatting.Compact的前5个最受欢迎的GitHub仓库
仓库 | 星标 |
---|---|
microsoft/reverse-proxy
一个用于开发高性能HTTP反向代理应用程序的工具包。
|
|
fullstackhero/dotnet-starter-kit
生产级别的云就绪.NET 8入门套件(Web API + Blazor客户端),支持多租户,具有整洁/模块化架构,可节省大约200+开发小时数!所有功能一应俱全。
|
|
umbraco/Umbraco-CMS
Umbraco是一个免费开源的.NET内容管理系统,帮助您提供愉悦的数字体验。
|
|
BililiveRecorder/BililiveRecorder
录播姬 | mikufans 生放送录制
|
|
fullstackhero/blazor-starter-kit
使用MudBlazor组件构建的Blazor WebAssembly清洁架构模板。
|
版本 | 下载 | 最后更新 |
---|---|---|
3.0.0 | 644,004 | 6/9/2024 |
3.0.0-dev-00980 | 101 | 6/9/2024 |
2.0.1-dev-00969 | 13,492 | 2/5/2024 |
2.0.0 | 29,152,496 | 11/9/2023 |
2.0.0-dev-00962 | 647 | 11/9/2023 |
2.0.0-dev-00961 | 77,302 | 10/4/2023 |
1.1.1-dev-00944 | 485,923 | 5/11/2021 |
1.1.1-dev-00940 | 128,423 | 3/6/2020 |
1.1.1-dev-00939 | 6,888 | 3/6/2020 |
1.1.0 | 278,758,847 | 10/17/2019 |
1.1.0-dev-00934 | 1,495 | 10/17/2019 |
1.0.1-dev-00933 | 4,093 | 10/6/2019 |
1.0.1-dev-00929 | 1,614 | 10/5/2019 |
1.0.1-dev-00925 | 106,804 | 1/24/2019 |
1.0.1-dev-00922 | 366,362 | 10/23/2016 |
1.0.1-dev-00920 | 2,835 | 8/29/2016 |
1.0.0 | 128,255,967 | 7/5/2016 |
1.0.0-rc-916 | 2,051 | 6/26/2016 |
1.0.0-rc-915 | 1,924 | 6/26/2016 |
1.0.0-rc-912 | 2,014 | 6/25/2016 |
1.0.0-rc-9 | 2,005 | 6/22/2016 |
1.0.0-rc-6 | 1,957 | 6/21/2016 |
1.0.0-rc-5 | 1,971 | 6/21/2016 |
1.0.0-rc-3 | 1,897 | 6/21/2016 |
1.0.0-rc-10 | 1,903 | 6/22/2016 |