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是否配置错误. 具体而言,该功能可检 ...
随机推荐
- 第一章、PyQt的简介、安装与配置
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 第一章.PyQt的简介.安装与配置 一.引言 当朋友向我推荐PyQt时,老猿才知道有这样一个在Pyt ...
- Acwing 403. 平面
以一个这个环为基准,剩下的边可以放在圈外,也可以放在圈内,两种状态. 如果两条线段出现了环上意义的交叉即冲突,即不能同时放在圈外/内. 这是典型的 2-SAT 问题,因为关系传递是无向的,即逆命题与原 ...
- 搭建docker registry私有镜像仓库
搭建docker registry私有镜像仓库 一.安装docker-distribution yum install -y docker-distribution 安装完成后,启动服务: syste ...
- 调用windows系统下的cmd命令窗口处理文件
从后缀名为grib2的文件中查询相关的信息,并将查出来的信息保存起来. 主要是学习java中调用windows下的cmd平台,并进行执行相关的命令. package com.wis.wgrib2; i ...
- KafkaMirrorMaker 的不足以及一些改进
背景 某系统使用 Kafka 存储实时的行情数据,为了保证数据的实时性,需要在多地机房维护多个 Kafka 集群,并将行情数据同步到这些集群上. 一个常用的方案就是官方提供的 KafkaMirrorM ...
- 云图说 | 云上资源管控有神器!关于IAM,你想知道的都在这里!
摘要:统一身份认证(Identity and Access Management,简称IAM)是华为云上帮助您安全控制华为云资源访问权限的基础服务.通过本期云图说,您可以初步了解IAM的基本功能. 从 ...
- 面试 09-02.js运行机制:异步和单线程
09-02.js运行机制:异步和单线程 #前言 面试时,关于同步和异步,可能会问以下问题: 同步和异步的区别是什么?分别举一个同步和异步的例子 一个关于 setTimeout 的笔试题 前端使用异步的 ...
- 工具-Git与GitHub-安装以及基本操作(99.5.1)
@ 目录 1.安装 2.使用 3.工作区和版本库 关于作者 1.安装 1.windows安装 安装后添加环境变量 2.linux安装 sudo apt-get install git 2.使用 1.常 ...
- Web服务器-并发服务器-协程 (3.4.2)
@ 目录 1.分析 2.代码 关于作者 1.分析 随着网站的用户量越来愈多,通过多进程多线程的会力不从心 使用协程可以缓解这一问题 只要使用gevent实现 2.代码 from socket impo ...
- SpringBoot从入门到精通教程(三)
在上一篇中,我们已经讲了,SpringBoot 如何构建项目,和SpringBoot的HelloWorld, 那这一节我们继续讲 Thymeleaf Thymeleaf 官网: Thymeleaf T ...