亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C#第三方日志插件Log4net的配置文件詳解

 更新時間:2024年03月13日 10:11:26   作者:全棧小5  
Log4net是一個穩(wěn)定且功能豐富的日志庫,已經(jīng)存在多年并且被廣泛使用,這篇文章主要為大家詳細介紹了Log4net日志插件的配置文件信息,感興趣的可以了解下

背景

最近在最一些并發(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

輸出當前用戶(或線程)身份標識。

7.%username

輸出當前 Windows 用戶名。

8.%property{key}

輸出指定鍵名的 log4net 屬性值。

9.%method

輸出正在運行的方法名。

10.%line

輸出正在運行的方法的行號。

11.%class

輸出正在運行的方法所在的類名。

12.%file

輸出正在運行的方法所在的文件名。

文件鎖定

在 log4net 配置中,lockingModel 標簽用于定義日志文件的鎖定行為,它會影響多個線程或進程同時對日志文件進行寫入操作時的行為。

lockingModel 標簽有兩種常用的值可以選擇:

1.FileAppender.MinimalLock

使用這種鎖定模式時,文件會被用于寫入期間短暫地鎖定。這可以確保寫入操作是原子的,但在某些情況下可能會影響性能。

2.FileAppender.ExclusiveLock

這是默認的鎖定模式,它會獨占文件,直到寫入操作完成。這種鎖定模式會確保在寫入期間不會有其他進程或線程可以訪問日志文件,但可能會影響并發(fā)性能。

lockingModel 標簽允許你根據(jù)實際情況選擇合適的鎖定行為,以確保日志文件的完整性和并發(fā)訪問的效率。

通常情況下,默認的 ExclusiveLock 模式能夠滿足大多數(shù)需求,但在特定情況下,你可能需要根據(jù)系統(tǒng)性能和并發(fā)訪問的情況來選擇合適的鎖定模式。

輸出控制臺

簡單輸出

1)appender標簽

  • name,自定義命名,用于后面ref使用
  • type,類型,log4net.Appender.ConsoleAppender,控制臺類型

2)Layout標簽

type,類型,log4net.Layout.PatternLayout

3)conversionPattern標簽

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,
                               身份標識:%identity,
                               用戶名:%username,
                               屬性值:%property{key},
                               方法名:%method,
                               行號:%line,
                               類名:%class,
                               文件名:%file" />
        </layout>
    </appender>

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

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

輸出到文檔

1)appender標簽

  • name,自定義命名,用于后面ref使用
  • type,類型,log4net.Appender.FileAppender,文件類型

2)file標簽

value,路徑值,logs\logfile.txt

3)appendToFile標簽

value,值,true,追加內(nèi)容的方式到文本文檔里

4)lockingModel標簽

2)Layout標簽

type,類型,log4net.Layout.PatternLayout

3)conversionPattern標簽

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 Core 6.0 中使用 log4net,可以通過配置文件中的 元素來設置日志文件的路徑和文件名。

1)file標簽

  • type,類型,log4net.Util.PatternString,設置時間匹配類型
  • 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>

文件大小

1)rollingStyle標簽

創(chuàng)建日志文件的方式,可選值:Date(日期)、文件大?。⊿ize、,混合(Composite)

2)maximumFileSize標簽

單個文件大小。單位:KB|MB|GB

3)maxSizeRollBackups標簽

最多保留的文件數(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>

    <!--嚴重錯誤日志-->
    <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>

    <!--調試日志-->
    <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>

以上就是C#第三方日志插件Log4net的配置文件詳解的詳細內(nèi)容,更多關于C# Log4net日志插件的資料請關注腳本之家其它相關文章!

相關文章

最新評論