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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

ASP.NET 5 入门 (3) – Logging

發布時間:2025/3/17 asp.net 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ASP.NET 5 入门 (3) – Logging 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
原文:ASP.NET 5 入門 (3) – Logging

ASP.NET 5 理解和入門

建立和開發ASP.NET 5 項目

使用自定義配置文件

ASP.NET 5 入門 (3) – Logging

前幾天就關注到湯姆大叔的相關文檔: 解讀ASP.NET 5 & MVC6系列(9):日志框架.

講的已經很清楚了, 這里就不加累述了,那么換一個角度,在實現方案和代碼開發方面談下自己的理解.

理解ASP.NET5的Logging

ASP.NET 5的Logging我認為其實就是2句話:

  • Logging的使用: 應用內部的Logging統一使用Microsoft.Framework.Logging接口.
  • Logging的實現: 通過不同的代理類向不同的Logging實現技術分發應用內部產生的Log.

Logging的使用其實就是依托2個基本接口:? ILogger和ILoggerFactory.

Logging的實現其實就是通過實現不同的ILoggerProvider代理接口和其他技術對接.

如果還是不明白可以看下目前Microsoft.Framework.Logging的源碼,就清楚了:

https://github.com/aspnet/Logging/tree/dev/src

?

? ? ? ? ? ? ? ? ? ? ? ?

我們可以看到Abstractions就是Logging的通用接口,而Console, Nlog和TraceSouce就是3個內部提供的代理類.目前能夠使用的只有Console和TraceSource代理, 而NLog并沒有提交, 不過根據這里面的代碼,我相信針對其他Logging技術比如Log4Net,Serilog的代理類也并不難實現.

如何使用通用Logging框架

使用Logging框架一共分3步:

  • 使用依賴注入獲取ILoggerFactory實現.
  • 利用ILoggerFactory構建ILogger實例
  • 使用ILogger實例輸出Log信息.
  • 我們還是以最經典的Startup的Configurate函數為例:

    ?

    public void Configure(IApplicationBuilder app){//利用最簡單的GetService函數獲取通過依賴注入獲取ILoggerFactory實現var loggerfactory = (ILoggerFactory)app.ApplicationServices.GetService(typeof(ILoggerFactory));//創建logger實例var logger = loggerfactory.CreateLogger<Startup>();//輸出一條Log信息logger.LogWarning("這是一條警告信息");}


    那么這些輸出的Log信息在那里顯示呢,除了VS調試環境,很遺憾沒有任何地方能看到這些信息,這是因為標準的Logging實現不實現任何輸出,如果要想輸出,必須加入各種代理類把Log分發出去.

    加入Console代理

    首先我們加入引用:

    "Microsoft.Framework.Logging.Console": "1.0.0-beta4"

    其次我們加入如下代碼

    var loggerfactory = (ILoggerFactory)app.ApplicationServices.GetService(typeof(ILoggerFactory)); // 加入Console代理 loggerfactory.AddConsole(minLevel:LogLevel.Information);


    代理在加入在項目中只需要加一次,一般就在Configure函數中加入即可. 加入以上代碼以后,所有從通用接口分發的Log信息都會顯示在程序控制臺上面,當然由于設置了minLevel屬性,僅僅高于或等于Information等級的信息才會被顯示.

    加入TraceSource代理

    如果僅僅是在控制臺顯示顯然是不過癮的,一般來說,我們會把log輸出到文件,在目前的情況下我們只能通過TraceSource代理吧Log輸出到文件. TraceSource是System.Diagnostics中的主要內容,大家應該并不陌生.

    首先我們還是需要加入一些組件

    "Microsoft.Framework.Logging.TraceSource": "1.0.0-beta4"

    如果要讓Core 5.0也支持,還必須加入

    "System.Diagnostics.TextWriterTraceListener": "4.0.0-beta-22816"

    實現的代碼是(開發時自行加入所需的using語句):

    var loggerfactory = (ILoggerFactory)app.ApplicationServices.GetService(typeof(ILoggerFactory));// Add trace source logger var logFileStream = new FileStream("app.log", FileMode.Append); var traceListenter = new TextWriterTraceListener(logFileStream) {Filter = new EventTypeFilter(SourceLevels.Error | SourceLevels.Critical) }; var source = new SourceSwitch("AppLog") {Level = SourceLevels.All }; loggerfactory.AddTraceSource(source, traceListenter);


    根據以上代碼,所有Error和Critical的Log信息會被輸出到當前目錄的app.log文件中去,如果要顯示更多等級的信息請自行修改Filter.

    該代理和Console一樣,也只需要運行一次,同樣建議在Configurate中運行.

    其他代理的實現展望

    其他的代理類目前是沒有比較完整的實現,但我們可以預見到后續的實現方法其實并不難,就是:

    • 首先引入你使用的第三方Log實現,比如Log4Net,NLog,Serilog等.
    • 然后引入或者自行開發代理類, 一般這個代理類會為ILoggerFactory實現一個擴展函數 AddXXX() : 比如AddNlog , AddLog4Net , AddSeriLog 等等.
    • 最后在Configutate函數中調用這個擴展函數AddXXX() 函數把標準Logging分發到該第三方Log實現.

    這就是目前ASP.NET 5 所提供的Logging分發思路和實現方案.

    總結

    以上是生活随笔為你收集整理的ASP.NET 5 入门 (3) – Logging的全部內容,希望文章能夠幫你解決所遇到的問題。

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