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 了
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 到日志信息中
Reference
- https://docs.microsoft.com/en-us/aspnet/core/release-notes/aspnetcore-5.0?view=aspnetcore-5.0#console-logger-formatter
- https://github.com/WeihanLi/SparkTodo
asp.net core 5.0 中的 JsonConsole的更多相关文章
- ASP.NET Core 1.0 中的依赖项管理
var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...
- 在ASP.NET Core 1.0中如何发送邮件
(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:目前.NET Core 1.0中并没有提供SMTP相关的类库,那么要如何从ASP.NE ...
- ASP.NET Core 1.0 中使用 Swagger 生成文档
github:https://github.com/domaindrivendev/Ahoy 之前文章有介绍在ASP.NET WebAPI 中使用Swagger生成文档,ASP.NET Core 1. ...
- 用ASP.NET Core 1.0中实现邮件发送功能
准备将一些项目迁移到 asp.net core 先从封装类库入手,在遇到邮件发送类时发现在 asp.net core 1.0中并示提供SMTP相关类库,于是网上一搜发现了MailKit 好东西一定要试 ...
- 在ASP.NET Core 2.0中使用CookieAuthentication
在ASP.NET Core中关于Security有两个容易混淆的概念一个是Authentication(认证),一个是Authorization(授权).而前者是确定用户是谁的过程,后者是围绕着他们允 ...
- 如何在ASP.NET Core 2.0中使用Razor页面
如何在ASP.NET Core 2.0中使用Razor页面 DotNetCore2017-11-22 14:49 问题 如何在ASP.NET Core 2.0中使用Razor页面 解 创建一个空的项 ...
- ASP.NET Core 3.0中使用动态控制器路由
原文:Dynamic controller routing in ASP.NET Core 3.0 作者:Filip W 译文:https://www.cnblogs.com/lwqlun/p/114 ...
- asp.net core 3.0 中使用 swagger
asp.net core 3.0 中使用 swagger Intro 上次更新了 asp.net core 3.0 简单的记录了一下 swagger 的使用,那个项目的 api 比较简单,都是匿名接口 ...
- 探索 ASP.Net Core 3.0系列三:ASP.Net Core 3.0中的Service provider validation
前言:在本文中,我将描述ASP.NET Core 3.0中新的“validate on build”功能. 这可以用来检测您的DI service provider是否配置错误. 具体而言,该功能可检 ...
随机推荐
- Python正则表达式re.match(r"(..)+", "a1b2c3")匹配结果为什么是”c3”?
在才开始学习正则表达式处理时,老猿对正则表达式:re.match(r"(-)+", "a1b2c3") 返回的匹配结果为"c3"没有理解,学 ...
- 使用Fiddle修改请求数据
修改请求数据 以淘宝网为例 命令行中输入bpu 及要拦截的请求地址,如bpu https://s.taobao.com/search 在搜索栏中输入"面包机" 可以看到拦截到的请求 ...
- [RoarCTF2019]黄金6年
嘶吼CTF的杂项题 这道题目比较简单 下载之后是一个mp4文件,黄金六年,害,亲爱的热爱的里面的梗 使用010 Editor打开视频文件,发现最下面有base64编码 UmFyIRoHAQAzkrXl ...
- 冲刺Day6
每天举行站立式会议照片: 昨天已完成的工作: 1.确认商品搜索栏页面(全) 2.订单模块的大部分代码 3.用户模块的大部分代码 今天计划完成的工作: 成员 任务 高嘉淳 检查用户模块的功能并更正 覃泽 ...
- Day1 Scrum 冲刺博客
团队作业4--项目冲刺 第一篇博客 一. 各个成员在 Alpha 阶段认领的任务 蔡越,冷沐样:视觉元素设计与方块类Cell开发 周梓波,纪昂学:游戏功能逻辑开发,即抽象出主要元素对应的数据类型 廖业 ...
- OI学习过程记录
这帖子本来是教练为了给低年级学生分享经验而让我写的学习经历,不过等我退役之后可能就变成回忆录了. 初三 WC 前:上了正睿的线上课程,练了一些模拟赛,同时也正在学文化课. 然后,莫名奇妙1膜考了全校前 ...
- Windows的API功能查询
在逆向分析时,一些Windows的API函数往往是我们的突破口.但这些函数很难记得一清二楚,以下是我的查找办法,做个小结. 官网 https://docs.microsoft.com/en-us/wi ...
- KVM初体验之virt-manager unable to connect to libvirt的处理办法
解决方法 需要用root身份运行virt-manager
- Fisco Bcos学习资料连接
大牛博客:http://m.blog.csdn.net/sportshark FISCO BCOS学习资料索引;http://kb.bsnbase.com/webdoc/view/Pub4028813 ...
- NetCDF格式.nc
netcdf sfc_pres_temp { dimensions: latitude = 6 ; //纬度轴 longitude = 12 ; //经度轴 variables: float lati ...