国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【C#】.net core 6.0 使用第三方日志插件Log4net,配置文件詳細說明

這篇具有很好參考價值的文章主要介紹了【C#】.net core 6.0 使用第三方日志插件Log4net,配置文件詳細說明。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

歡迎來到《小5講堂》
大家好,我是全棧小5。
這是《C#》系列文章,每篇文章將以博主理解的角度展開講解,
特別是針對知識點的概念進行敘說,大部分文章將會對這些概念進行實際例子驗證,以此達到加深對知識點的理解和掌握。
溫馨提示:博主能力有限,理解水平有限,若有不對之處望指正!

.net 6 log4net,C#,c#,.netcore,開發(fā)語言

背景

最近在最一些并發(fā)方式的測試,發(fā)現(xiàn)自己之前封裝的一個日志插件報錯,
盡管在寫日志時已經(jīng)通過鎖的方式進行了優(yōu)化,但是依然無法解決并發(fā)時同一個文件同時訪問情況,
會頻繁出現(xiàn)報錯提示xxx.txt文件正在被另一個進程訪問而不無法操作。
基于這個原因,暫時沒有想好很好的優(yōu)化方案,從而考慮使用第三方優(yōu)秀日志插件來解決并發(fā)情況。
本篇文章主要來分析下Log4net日志插件的配置文件信息。

占位符

在 log4net 中,占位符是在日志輸出時使用,它們會被實際的值替換。
在 .NET Core 6.0 中使用 log4net,可以在 layout 元素的 ConversionPattern 屬性中使用如下占位符:

1.%date
輸出日志時間戳,格式為 yyyy-MM-dd HH:mm:ss,fff。

2.%level
輸出日志級別,如 INFO、DEBUG、WARN、ERROR、FATAL。

3.%logger
輸出日志記錄器名稱。

4.%message
輸出日志消息。

5.%exception
輸出異常信息。

6.%identity
輸出當(dāng)前用戶(或線程)身份標(biāo)識。

7.%username
輸出當(dāng)前 Windows 用戶名。

8.%property{key}
輸出指定鍵名的 log4net 屬性值。

9.%method
輸出正在運行的方法名。

10.%line
輸出正在運行的方法的行號。

11.%class
輸出正在運行的方法所在的類名。

12.%file
輸出正在運行的方法所在的文件名。

文件鎖定

在 log4net 配置中,
lockingModel 標(biāo)簽用于定義日志文件的鎖定行為,它會影響多個線程或進程同時對日志文件進行寫入操作時的行為。
lockingModel 標(biāo)簽有兩種常用的值可以選擇:
1.FileAppender.MinimalLock
使用這種鎖定模式時,文件會被用于寫入期間短暫地鎖定。這可以確保寫入操作是原子的,但在某些情況下可能會影響性能。
2.FileAppender.ExclusiveLock
這是默認(rèn)的鎖定模式,它會獨占文件,直到寫入操作完成。這種鎖定模式會確保在寫入期間不會有其他進程或線程可以訪問日志文件,但可能會影響并發(fā)性能。

lockingModel 標(biāo)簽允許你根據(jù)實際情況選擇合適的鎖定行為,以確保日志文件的完整性和并發(fā)訪問的效率。
通常情況下,默認(rèn)的 ExclusiveLock 模式能夠滿足大多數(shù)需求,但在特定情況下,你可能需要根據(jù)系統(tǒng)性能和并發(fā)訪問的情況來選擇合適的鎖定模式。

輸出控制臺

簡單輸出

1)appender標(biāo)簽
name,自定義命名,用于后面ref使用
type,類型,log4net.Appender.ConsoleAppender,控制臺類型
2)Layout標(biāo)簽
type,類型,log4net.Layout.PatternLayout
3)conversionPattern標(biāo)簽
value,輸出值格式,占位符,時間、線程、等級、日志器名稱、日志信息、換行

<?xml version="1.0" encoding="utf-8" ?>
<log4net>
        <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%date [%thread] %-5level %logger - %message%line" />
            </layout>
        </appender>

        <root>
            <level value="DEBUG" />
            <appender-ref ref="ConsoleAppender" />
        </root>
</log4net>

%date [%thread] %-5level %logger - %message%newline
2024-03-11 16:04:58,871 [1] DEBUG Core6TestResouce.SqlHelper - Debug message

詳細輸出

<?xml version="1.0" encoding="utf-8" ?>
<log4net>
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="
                               時間:%date,
                               日志等級:%level,
                               日志記錄器名稱:%logger,
                               輸出日志信息:%message,
                               輸出異常信息:%exception,
                               身份標(biāo)識:%identity,
                               用戶名:%username,
                               屬性值:%property{key},
                               方法名:%method,
                               行號:%line,
                               類名:%class,
                               文件名:%file" />
        </layout>
    </appender>

    <root>
        <level value="DEBUG" />
        <appender-ref ref="ConsoleAppender" />
    </root>
</log4net>

.net 6 log4net,C#,c#,.netcore,開發(fā)語言

時間:2024-03-11 16:12:49,888,
日志等級:DEBUG,
日志記錄器名稱:Core6TestResouce.SqlHelper,
輸出日志信息:Debug message,
輸出異常信息:,
身份標(biāo)識:,
用戶名:HLH-20220711RIK\Administrator,
屬性值:(null),
方法名:Test,
行號:15,
類名:Core6TestResouce.SqlHelper,
文件名:G:\Core6TestResouce\Core6TestResouce\SqlHelper.cs

輸出到文檔

1)appender標(biāo)簽
name,自定義命名,用于后面ref使用
type,類型,log4net.Appender.FileAppender,文件類型
2)file標(biāo)簽
value,路徑值,logs\logfile.txt
3)appendToFile標(biāo)簽
value,值,true,追加內(nèi)容的方式到文本文檔里
4)lockingModel標(biāo)簽
2)Layout標(biāo)簽
type,類型,log4net.Layout.PatternLayout
3)conversionPattern標(biāo)簽
value,輸出值格式,占位符,時間、線程、等級、日志器名稱、日志信息、換行

<?xml version="1.0" encoding="utf-8" ?>
<log4net>
    <appender name="FileAppender" type="log4net.Appender.FileAppender">
        <file value="logs\logfile.txt" />
        <appendToFile value="true" />
        <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date [%thread] %-5level %logger - %message%line" />
        </layout>
    </appender>

    <root>
        <level value="DEBUG" />
        <appender-ref ref="FileAppender" />
    </root>
</log4net>

.net 6 log4net,C#,c#,.netcore,開發(fā)語言

自定義文件名

在 .NET Core 6.0 中使用 log4net,可以通過配置文件中的 元素來設(shè)置日志文件的路徑和文件名。
1)file標(biāo)簽
type,類型,log4net.Util.PatternString,設(shè)置時間匹配類型
value,路徑值,logs%date{yyyyMMddHH}.log
2)下面是一個示例的 log4net 配置文件片段,演示如何將日志文件存儲在按時間組織的文件夾中,并自定義日志文件名

<?xml version="1.0" encoding="utf-8" ?>
<log4net>
    <appender name="FileAppender" type="log4net.Appender.FileAppender">
        logs2024M3d11
        <file type="log4net.Util.PatternString" value="logs\%date{yyyyMMddHH}.log" />

        <appendToFile value="true" />
        
        <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date [%thread] %-5level %logger - %message - %line" />
        </layout>
    </appender>

    <root>
        <level value="DEBUG" />
        <appender-ref ref="FileAppender" />
    </root>
</log4net>

.net 6 log4net,C#,c#,.netcore,開發(fā)語言

文件大小

1)rollingStyle標(biāo)簽
創(chuàng)建日志文件的方式,可選值:Date(日期)、文件大?。⊿ize、,混合(Composite)
2)maximumFileSize標(biāo)簽
單個文件大小。單位:KB|MB|GB
3)maxSizeRollBackups標(biāo)簽
最多保留的文件數(shù),設(shè)為"-1"則不限

<?xml version="1.0" encoding="utf-8" ?>
<log4net>
    <!--定義日志級別-->
    <root>
        <level value="FATAL"/>
        <level value="ERROR"/>
        <level value="WARN"/>
        <level value="INFO"/>
        <level value="DEBUG"/>
        <appender-ref ref="FATALAppender" />
        <appender-ref ref="ERRORAppender" />
        <appender-ref ref="WARNAppender" />
        <appender-ref ref="INFOAppender" />
        <appender-ref ref="DebugAppender" />
    </root>

    <!--嚴(yán)重錯誤日志-->
    <appender name="FATALAppender" type="log4net.Appender.RollingFileAppender">
        <file type="log4net.Util.PatternString" value="logs\Fatal\%date{yyyyMMddHH}.log" />

        <appendToFile value="true" />
        <rollingStyle value="Size" />
        <maximumFileSize value="100KB"/>
        <maxSizeRollBackups value="-1"/>

        <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date [%thread] %-5level %logger - %message - %line" />
        </layout>
    </appender>

    <!--調(diào)試日志-->
    <appender name="DebugAppender" type="log4net.Appender.RollingFileAppender">
        <file type="log4net.Util.PatternString" value="logs\Debug\%date{yyyyMMddHH}.log" />

        <appendToFile value="true" />
        <rollingStyle value="Size" />
        <maximumFileSize value="100KB"/>
        <maxSizeRollBackups value="-1"/>

        <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date [%thread] %-5level %logger - %message - %line" />
        </layout>
    </appender>
</log4net>

.net 6 log4net,C#,c#,.netcore,開發(fā)語言

相關(guān)文章

【C#】使用代碼實現(xiàn)龍年春晚撲克牌魔術(shù)(守歲共此時),代碼實現(xiàn)篇
【C#】使用代碼實現(xiàn)龍年春晚撲克牌魔術(shù)(守歲共此時),流程描述篇
【C#】約瑟夫原理舉例2個代碼實現(xiàn)
【C#】List泛型數(shù)據(jù)集如何循環(huán)移動,最后一位移動到第一位,以此類推
【C#】獲取文本中的鏈接,通過正則表達式的方法獲取以及優(yōu)化兼容多種格式

溫故而知新,不同階段重溫知識點,會有不一樣的認(rèn)識和理解,博主將鞏固一遍知識點,并以實踐方式和大家分享,若能有所幫助和收獲,這將是博主最大的創(chuàng)作動力和榮幸。也期待認(rèn)識更多優(yōu)秀新老博主。文章來源地址http://www.zghlxwxcb.cn/news/detail-848589.html

到了這里,關(guān)于【C#】.net core 6.0 使用第三方日志插件Log4net,配置文件詳細說明的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 擴展Nginx的無限可能:掌握常見擴展模塊和第三方插件的使用方法

    Nginx是一款高性能的開源Web服務(wù)器和反向代理服務(wù)器。它具有模塊化的架構(gòu),可以通過擴展模塊和插件來增強其功能。在本文中,我將圍繞Nginx的擴展模塊和插件進行講解,并提供一些常見的擴展模塊和第三方插件的示例。 Nginx的擴展模塊是編譯到Nginx中的可選組件,可以通過

    2024年02月08日
    瀏覽(29)
  • UE5.1保姆級創(chuàng)建第三方插件庫使用DLL,以及踩坑筆記

    UE5.1保姆級創(chuàng)建第三方插件庫使用DLL,以及踩坑筆記

    完全沒接觸過C++的插件和DLL,因為MediaPipe需要自己創(chuàng)建插件并編譯DLL庫,所以把該踩的坑都踩了一遍,幾天終于把DLL加載給弄明白了.創(chuàng)作不易,還請點個贊! 參考資料: 封裝自己的項目為dll給其他用戶使用_嗶哩嗶哩_bilibili 【UE5】UE項目中靜態(tài)庫還沒整明白吧,動態(tài)鏈接庫又來了_嗶

    2023年04月21日
    瀏覽(96)
  • 如何在微信小程序里面使用npm安裝第三方插件(以安裝vant ui為例)

    如何在微信小程序里面使用npm安裝第三方插件(以安裝vant ui為例)

    1.在cmd里或者是終端里,找到對應(yīng)的項目,并執(zhí)行下面的命令,用來初始化package.json文件。 2.勾選下圖選項 3.執(zhí)行下面的命令安裝vant ui 然后你會發(fā)現(xiàn)多了一個node_modules文件, 里面存的就是第三方組件。 4.最后一步,每次安裝完一個新的第三方插件都要執(zhí)行“構(gòu)建npm” 執(zhí)行完

    2024年02月14日
    瀏覽(89)
  • 項目中拖拽元素,可以使用html的draggable屬性,當(dāng)然也可以用第三方插件interact

    項目中拖拽元素,可以使用html的draggable屬性,當(dāng)然也可以用第三方插件interact

    html的draggable屬性需要自己寫邏輯,用人家封裝好的代碼簡單邏輯清楚,非常香 鏈接: https://blog.csdn.net/vvv3171071/article/details/122705408

    2024年02月08日
    瀏覽(21)
  • pytest 第三方插件

    目錄 前言: 順序執(zhí)行:pytest-ordering 失敗重試:pytest-rerunfailures 并行執(zhí)行:pytest-xdist pytest 是一個廣泛使用的 Python 測試框架。它具有強大的測試運行器、測試驅(qū)動開發(fā)和測試結(jié)果可視化等功能。除此之外,pytest 還支持許多第三方插件,這些插件可以為測試帶來更多的便利和

    2024年02月16日
    瀏覽(23)
  • JMeter進階-常用第三方插件講解

    JMeter進階-常用第三方插件講解

    準(zhǔn)備工作: 1.最新版本的JMeter是默認(rèn)不展示插件管理器的,所以我們需要手動添加插件管理器 2.下載地址:https://jmeter-plugins.org/install/Install/,下載插件plugins-manager.jar,然后將jar包放在apache-jmeter-x.x.xlibext路徑下,重新打開jmeter客戶端即可在“選項”下面可以看到了Plugins-Ma

    2023年04月08日
    瀏覽(19)
  • 微信小程序第三方插件申請

    記錄下小程序申請插件的頁面,之前自己找了很久,方便后續(xù)使用 1. 先找到自己需要的第三方插件的appid 2.?登錄微信公眾平臺后臺(mp.weixin.qq.com) 3. 打開小程序插件頁面? ????????https://mp.weixin.qq.com/wxopen/plugindevdoc?appid=插件appid ? ? ? ? 如小程序直播的頁面就是:http

    2024年02月09日
    瀏覽(93)
  • uniapp原生插件開發(fā)調(diào)用第三方SDK

    uniapp原生插件開發(fā)調(diào)用第三方SDK

    uniapp安卓官方SDK Android 離線SDK - 正式版 | uni小程序SDK 官方uni原生插件開發(fā)教程(android)網(wǎng)址: 簡介 | uni小程序SDK 第一步,開發(fā)環(huán)境的準(zhǔn)備 下載uniapp安卓官方SDK待后面使用,解壓完成如下圖所示。 JAVA環(huán)境 jdk,打開cmd輸入java -version查看自己的jdk版本,官方文檔中提示jdk版本應(yīng)

    2024年02月15日
    瀏覽(28)
  • 如何在沒有第三方.NET庫源碼的情況,調(diào)試第三庫代碼?

    大家好,我是沙漠盡頭的狼。 本方首發(fā)于Dotnet9,介紹使用dnSpy調(diào)試第三方.NET庫源碼,行文目錄: 安裝dnSpy 編寫示例程序 調(diào)試示例程序 調(diào)試.NET庫原生方法 總結(jié) dnSpy是一款功能強大的.NET程序反編譯工具,可以對.NET程序進行反編譯,代替庫文檔的功能,代碼丟失或者損壞可直

    2024年02月08日
    瀏覽(21)
  • VScode第三方插件打開sqlite數(shù)據(jù)庫

    VScode第三方插件打開sqlite數(shù)據(jù)庫

    最近在做的東西涉及SQLite數(shù)據(jù)庫(一種常用在移動端的數(shù)據(jù)庫類型,和mysql這些主流數(shù)據(jù)庫也差不多),為了方便調(diào)試開發(fā),數(shù)據(jù)庫預(yù)覽很重要;同時,mac預(yù)覽數(shù)據(jù)庫的軟件多數(shù)是要收費的,且我體驗時間用了兩款也不是特別滿意。 針對只是要預(yù)覽數(shù)據(jù)庫不做太多操作,需要

    2024年02月03日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包