日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

.net 5.0 中的 JsonConsole

發(fā)布時間:2023/12/4 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .net 5.0 中的 JsonConsole 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

asp.net core 5.0 中的 JsonConsole

Intro

asp.net core 5.0 中日志新增了 JsonConsole,還是輸出日志到 Console,但是會應用 Json 格式的一個 Formatter 把日志格式化成 json 再輸出到控制臺

Sample

一起來看一個示例,以我的一個小項目為例子來演示,默認的 console 日志格式是多行的,不夠結構化,想要進行加工的話就會比較麻煩,不能很方便的進行加工和擴展,而 JSON 則是一種相對來說比較結構化的數據,相對來說進行擴展就比較方便了。

來看一下默認日志輸出效果:

default console log

如圖所示,一條日志默認是兩行,第一行是日志級別和日志對應的 CategoryName 和 EventId,第二行是日志的具體內容

接著我們來使用一下 JsonConsole,配置方式如下,可以在 Program.cs 調用(推薦)

json console configure

再來看輸出的日志:

json console log

可以看到現在的日志已經是 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

擴展方法實現https://github.com/dotnet/runtime/blob/v5.0.0/src/libraries/Microsoft.Extensions.Logging.Console/src/ConsoleLoggerExtensions.cs:

AddJsonConsole 擴展實現:

AddJsonConsole

AddConsoleWithFormatter 實現:

AddConsoleWithFormatter

AddConsole 實現:

AddConsole

More

在之前的版本,如果想要把日志格式化成 JSON 輸出到控制臺,需要使用第三方的日志框架把日志序列化成 JSON,有了 JsonConsoleFormatter 之后我們就可以很方便的將日志格式化成 JSON 輸出到控制臺了。

日志輸出為 JSON 之后,想要對日志進行擴展和補充就會很容易,我們的應用目前使用的 .netcore 3.1,使用?nlog 把日志格式化成 JSON 輸出到控制臺,再通過 Fluentd 收集到 es,收集的同時會把應用所在的 k8s 環(huán)境信息如containerName, podName,clusterName 等也 Patch 到日志信息中

示例使用了默認的配置,我們也可以通過帶 action 的重載擴展方法自定義 Json 格式化的配置

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

總結

以上是生活随笔為你收集整理的.net 5.0 中的 JsonConsole的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。