国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - 在.NET 6中使用日志組件log4net的方法

在.NET 6中使用日志組件log4net的方法

2021-12-22 15:12搖曳de風箏 ASP.NET教程

本文詳細講解了Asp.Net Core中使用日志組件log4net的方法,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

本文將簡單介紹在.NET 6中使用log4net的方法,具體見下文范例。

1.首先新建一個ASP.NET Core空項目

在.NET 6中使用日志組件log4net的方法

2.通過Nuget包管理器安裝下面兩個包

log4net

Microsoft.Extensions.Logging.Log4Net.AspNetCore

在.NET 6中使用日志組件log4net的方法

3.在項目根目錄下新建log4net的配置文件log4net.config,并將其設置為始終復制

<?xml version="1.0" encoding="utf-8" ?>
<log4net>
    <!--根配置-->
    <root>
        <!--日志級別:可選值: ERROR > WARN > INFO > DEBUG -->
        <level value="ERROR"/>
        <level value="WARN"/>
        <level value="INFO"/>
        <level value="DEBUG"/>
        <appender-ref ref="ErrorLog" />
        <appender-ref ref="WarnLog" />
        <appender-ref ref="InfoLog" />
        <appender-ref ref="DebugLog" />
    </root>
    <!-- 錯誤 Error.log-->
    <appender name="ErrorLog" type="log4net.Appender.RollingFileAppender">
        <!--目錄路徑,可以是相對路徑或絕對路徑-->
        <param name="File" value="C:logs"/>
        <!--文件名,按日期生成文件夾-->
        <param name="DatePattern" value="/yyyy-MM-dd/"Error.log""/>
        <!--追加到文件-->
        <appendToFile value="true"/>
        <!--創建日志文件的方式,可選值:Date[日期],文件大小[Size],混合[Composite]-->
        <rollingStyle value="Composite"/>
        <!--寫到一個文件-->
        <staticLogFileName value="false"/>
        <!--單個文件大小。單位:KB|MB|GB-->
        <maximumFileSize value="200MB"/>
        <!--最多保留的文件數,設為"-1"則不限-->
        <maxSizeRollBackups value="-1"/>
        <!--日志格式-->
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="[%d{HH:mm:ss}]%m%n"/>
        </layout>
        <filter type="log4net.Filter.LevelRangeFilter">
            <param name="LevelMin" value="ERROR" />
            <param name="LevelMax" value="ERROR" />
        </filter>
    </appender>
 
    <!-- 警告 Warn.log-->
    <appender name="WarnLog" type="log4net.Appender.RollingFileAppender">
        <!--目錄路徑,可以是相對路徑或絕對路徑-->
        <param name="File" value="C:logs"/>
        <!--文件名,按日期生成文件夾-->
        <param name="DatePattern" value="/yyyy-MM-dd/"Warn.log""/>
        <!--追加到文件-->
        <appendToFile value="true"/>
        <!--創建日志文件的方式,可選值:Date[日期],文件大小[Size],混合[Composite]-->
        <rollingStyle value="Composite"/>
        <!--寫到一個文件-->
        <staticLogFileName value="false"/>
        <!--單個文件大小。單位:KB|MB|GB-->
        <maximumFileSize value="200MB"/>
        <!--最多保留的文件數,設為"-1"則不限-->
        <maxSizeRollBackups value="-1"/>
        <!--日志格式-->
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="[%d{HH:mm:ss}]%m%n"/>
        </layout>
        <filter type="log4net.Filter.LevelRangeFilter">
            <param name="LevelMin" value="WARN" />
            <param name="LevelMax" value="WARN" />
        </filter>
    </appender>
 
    <!-- 信息 Info.log-->
    <appender name="InfoLog" type="log4net.Appender.RollingFileAppender">
        <!--目錄路徑,可以是相對路徑或絕對路徑-->
        <param name="File" value="C:logs"/>
        <!--文件名,按日期生成文件夾-->
        <param name="DatePattern" value="/yyyy-MM-dd/"Info.log""/>
        <!--追加到文件-->
        <appendToFile value="true"/>
        <!--創建日志文件的方式,可選值:Date[日期],文件大小[Size],混合[Composite]-->
        <rollingStyle value="Composite"/>
        <!--寫到一個文件-->
        <staticLogFileName value="false"/>
        <!--單個文件大小。單位:KB|MB|GB-->
        <maximumFileSize value="200MB"/>
        <!--最多保留的文件數,設為"-1"則不限-->
        <maxSizeRollBackups value="-1"/>
        <!--日志格式-->
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="[%d{HH:mm:ss}]%m%n"/>
        </layout>
        <filter type="log4net.Filter.LevelRangeFilter">
            <param name="LevelMin" value="INFO" />
            <param name="LevelMax" value="INFO" />
        </filter>
    </appender>
 
    <!-- 調試 Debug.log-->
    <appender name="DebugLog" type="log4net.Appender.RollingFileAppender">
        <!--目錄路徑,可以是相對路徑或絕對路徑-->
        <param name="File" value="C:logs"/>
        <!--文件名,按日期生成文件夾-->
        <param name="DatePattern" value="/yyyy-MM-dd/"Debug.log""/>
        <!--追加到文件-->
        <appendToFile value="true"/>
        <!--創建日志文件的方式,可選值:Date[日期],文件大小[Size],混合[Composite]-->
        <rollingStyle value="Composite"/>
        <!--寫到一個文件-->
        <staticLogFileName value="false"/>
        <!--單個文件大小。單位:KB|MB|GB-->
        <maximumFileSize value="200MB"/>
        <!--最多保留的文件數,設為"-1"則不限-->
        <maxSizeRollBackups value="-1"/>
        <!--日志格式-->
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="[%d{HH:mm:ss}]%m%n"/>
        </layout>
        <filter type="log4net.Filter.LevelRangeFilter">
            <param name="LevelMin" value="DEBUG" />
            <param name="LevelMax" value="DEBUG" />
        </filter>
    </appender>
 
</log4net>

log4net配置參數此處不多贅述,只針對日志的輸出格式參數conversionPattern配置做簡要說明。

%M      輸出日志方法名
%m      輸出日志消息內容
%p      輸出優先級,即DEBUG,INFO,WARN,ERROR,FATAL
%r      輸出自應用啟動到輸出該log信息耗費的毫秒數
%c      輸出所屬的類目,通常就是所在類的全名
%t      輸出產生該日志事件的線程名
%n      輸出一個換行符
%l或%L  輸出日志事件的發生位置,包括類目名、發生的線程,以及在代碼中的行數。
%c      輸出日志信息所屬的類的全名
%d      輸出完整的日志時間點的日期時間,支持自定義格式。比如:%d{HH:mm:ss},輸出類似:22:10:28
%f      輸出日志信息所屬的類的類名

4.在Program中使用log4net輸出自定義日志內容

using log4net;

var builder = WebApplication.CreateBuilder(args);
//注入Log4Net
builder.Services.AddLogging(cfg =>
{
    cfg.AddLog4Net();
    //默認的配置文件路徑是在根目錄,且文件名為log4net.config
    //如果文件路徑或名稱有變化,需要重新設置其路徑或名稱
    //比如在項目根目錄下創建一個名為cfg的文件夾,將log4net.config文件移入其中,并改名為log.config
    //則需要使用下面的代碼來進行配置
    //cfg.AddLog4Net(new Log4NetProviderOptions()
    //{
    //    Log4NetConfigFileName = "cfg/log.config",
    //    Watch = true
    //});
});
var app = builder.Build();
//訪問根頁面時
app.MapGet("/", (ILogger<Program> logger) =>
{
    logger.LogInformation("logger:測試一下Log4Net=》Info");
    return "Hello World!";
});
//訪問test頁面時
app.MapGet("/test", () =>
{
    var log = LogManager.GetLogger(typeof(Program));
    log.Info("log:這是一條普通日志信息");
});
app.Run();

5.將項目運行起來,即可發現日志文件已生成

在.NET 6中使用日志組件log4net的方法

在.NET 6中使用日志組件log4net的方法

6.擴展使用:使用簡單工廠模式IOC注入到自定義類中使用

新建一個ITestLog4Net接口文件,并為其定義一個Log方法。

并且新建一個TestLog4Net的自定義類,繼承于ITestLog4Net,并實現該Log方法。

在Program中注入我們的自定義類TestLog4Net

builder.Services.AddTransient<ITestLog4Net, TestLog4Net>();
testLog4Net.Log();

 

使用方法

var testLog4Net = app.Services.GetService<ITestLog4Net>()!;

或者

var services = new ServiceCollection()!;
var provider = services.BuildServiceProvider()!;
var testLog4Net = provider.GetService<ITestLog4Net>()!;
testLog4Net.Log();

其中,使用下面這種寫法,將會收到一個編譯警告信息。

warning ASP0000: Calling "BuildServiceProvider" from application code results in an additional copy of singleton services being created. Consider alternatives such as dependency injecting services as parameters to "Configure".

在.NET 6中使用日志組件log4net的方法

推薦使用上面的寫法,百度之后,得到的答案是:不要通過調用BuildServiceProvider()這個方法應該只被 Host 調用一次。重復的服務提供者可能會導致一些意想不到的錯誤。如果有哪位大佬知道具體原因,請告知一下,謝謝!

Tips:代碼中的感嘆號!表示該對象不會為空,一定要確保該對象不會為空才能這樣寫,這是C#10中的新特性。

到此這篇關于在.NET 6中使用日志組件log4net的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://www.cnblogs.com/pinzi/p/15588766.html

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 国产精品久久久久国产a级 成人a在线视频 | 黄色国产在线看 | 亚洲午夜一区 | 国产激情网 | 色婷网| 免费国产视频 | 操操你| 一级二级在线观看 | 巴西性猛交xxxx免费看久久久 | 久久国产日韩 | 欧美精品成人一区二区三区四区 | 日韩欧美一级片 | 成人在线视频网站 | 日韩成人精品在线 | 亚洲一区二区在线播放 | 综合在线视频 | 欧美黄色影院 | 欧美日韩久久久 | 五月婷婷综合激情网 | 欧美日韩视频 | 在线免费观看av的网站 | 国产3区| 久草福利资源 | 综合伊人久久 | 亚洲精品国产a久久久久久 中文字幕在线第一页 | 黄色av大片在线观看 | av电影一区 | 亚洲视频一区二区三区 | 精品久久久久久亚洲综合网 | 91久久精品视频 | 国产欧美精品一区二区三区四区 | 国产99久久精品 | 欧美日韩激情一区 | 在线一区二区三区四区 | 国产福利视频在线观看 | t66y最新地址一地址二69 | 日韩精品视频在线播放 | 中文字幕国产视频 | 97碰碰碰 | 老色批影院| 一级毛片免费看 |