asp.net core 5.0 中的 JsonConsole
asp.net core 5.0 中的 JsonConsole
Intro#
asp.net core 5.0 中日志新增了 JsonConsole
,还是输出日志到 Console
,但是会应用 Json
格式的一个 Formatter
把日志格式化成 json 再输出到控制台
Sample#
一起来看一个示例,以我的一个小项目为例子来演示,默认的 console 日志格式是多行的,不够结构化,想要进行加工的话就会比较麻烦,不能很方便的进行加工和扩展,而 JSON 则是一种相对来说比较结构化的数据,相对来说进行扩展就比较方便了。
来看一下默认日志输出效果:
如图所示,一条日志默认是两行,第一行是日志级别和日志对应的 CategoryName
和 EventId
,第二行是日志的具体内容
接着我们来使用一下 JsonConsole
,配置方式如下,可以在 Program.cs
调用(推荐)
再来看输出的日志:
可以看到现在的日志已经是 JSON 了,每一条日志都是一个 JSON
Implement#
它的实现在于一个 JsonConsoleFormatter
,是基于 System.Text.Json
来实现的 Json
格式化,
我们也可以实现自己的 ConsoleFormatter
来自定义 Console
的日志格式,详细实现可以参考:https://github.com/dotnet/runtime/blob/v5.0.0/src/libraries/Microsoft.Extensions.Logging.Console/src/JsonConsoleFormatter.cs
AddJsonConsole
扩展实现:
AddConsoleWithFormatter
实现:
AddConsole
实现:
More#
在之前的版本,如果想要把日志格式化成 JSON 输出到控制台,需要使用第三方的日志框架把日志序列化成 JSON,有了 JsonConsoleFormatter
之后我们就可以很方便的将日志格式化成 JSON 输出到控制台了。
日志输出为 JSON 之后,想要对日志进行扩展和补充就会很容易,我们的应用目前使用的 .netcore 3.1,使用的是 nlog 把日志格式化成 JSON 输出到控制台,再通过 Fluentd 收集 es,收集的同时会把应用所在的 k8s 环境信息如containerName, podName,clusterName 等也 Patch 到日志信息中
示例使用了默认的配置,我们也可以通过带 action 的重载扩展方法自定义 Json 格式化的配置
Reference#
作者:weihanli
出处:https://www.cnblogs.com/weihanli/p/14249607.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
2020-01-08 asp.net core 实现支持多语言