欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Log4Net配置詳解及輸出自定義消息類示例代碼

 更新時間:2024年07月05日 09:49:11   作者:letmebaby  
這篇文章主要介紹了Log4Net配置詳解及輸出自定義消息類示例代碼,本文給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧

1.簡單使用實例

1.1 添加log4net.dll的引用。

  在NuGet程序包中搜索log4net并添加,此次我所用版本為2.0.17。如下圖:

1.2 添加配置文件

  右鍵項目,添加新建項,搜索選擇應(yīng)用程序配置文件,命名為log4net.config,步驟如下圖:

1.2.1 log4net.config簡單配置示例

  下面是一個簡單的配置示例,詳細節(jié)點及相應(yīng)的說明詳見 2. 配置文件節(jié)點詳解 。

log4net.config配置

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<log4net>
	<logger name="DefaultLog">
		<!--control log level: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF-->
		<!--如果沒有定義LEVEL的值,則缺省為DEBUG-->
		<level value="ALL" />
		<appender-ref ref="FileAppenderDefault"></appender-ref>
	</logger>
	<!-- appender 定義日志輸出方式   將日志以回滾文件的形式寫到文件中。-->
	<appender name="FileAppenderDefault" type="log4net.Appender.RollingFileAppender">
		<!--絕對路徑-->
		<!--<file value="D:\KangarooLog.txt"></file>-->
		<!--日志輸出到exe程序這個相對目錄下-->
		<file value="../../Log/DefalutLog" />
		<!--相對路徑,在項目的根目錄下-->
		<!--以最后一個路徑為準,所以上面的絕對路徑下不會寫日志-->
		<!--<file value="./Log/Kangaroo.txt"></file>-->
		<!--防止多線程時不能寫Log,官方說線程非安全-->
		<!--實際使用時,本地測試正常,部署后沒有不能寫日志的情況-->
		<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
		<!--追加日志內(nèi)容,true后續(xù)輸出的日志會追加到之前的日志文件-->
		<appendToFile value="true" />
		<!--可以為:Once|Size|Date|Composite-->
		<!--Composite為Size和Date的組合-->
		<rollingStyle value="Composite" />
		<!--日志最大個數(shù),都是最新的-->
		<!--rollingStyle節(jié)點為Date時,該節(jié)點不起作用-->
		<!--rollingStyle節(jié)點為Size時,只能有value個日志-->
		<!--rollingStyle節(jié)點為Composite時,每天有value個日志-->
		<maxSizeRollBackups value="10" />
		<!--當備份文件時,為文件名加的后綴-->
		<!--后綴為*.txt時,例:AX.txt_2008-07-24.PxP  應(yīng)該是程序上的一個bug-->
		<!--后綴為*.TXT時,例:AX.txt_2008-07-25.TXT-->
		<datePattern value="_yyyy-MM-dd'.log'" />
		<!--每個文件的大小。只在混合方式與文件大小方式下使用。超出大小后在所有文件名后自動增加正整數(shù)重新命名,數(shù)字最大的最早寫入??捎玫膯挝?KB|MB|GB。不要使用小數(shù),否則會一直寫入當前日志-->
		<maximumFileSize value="10MB" />
		<!--置為true,當前最新日志文件名永遠為file節(jié)中的名字-->
		<staticLogFileName value="false" />
		<!--輸出級別在INFO和ERROR之間的日志-->
		<!--<filter type="log4net.Filter.LevelRangeFilter">
			<param name="LevelMin" value="INFO" />
			<param name="LevelMax" value="ERROR" />
		</filter>-->
		<!--必須結(jié)合起來用,第一個只過濾出WARN,第二個拒絕其它其它日志輸出-->
		<filter type="log4net.Filter.LevelMatchFilter">
			<param name="LevelToMatch" value="WARN" />
		</filter>
		<filter type="log4net.Filter.DenyAllFilter" />
		<layout type="log4net.Layout.PatternLayout">
			<conversionPattern value="%n==========
			%n【日志級別】%-5level
			%n【記錄時間】%date
			%n【執(zhí)行時間】[%r]毫秒
			%n【執(zhí)行Log分類的名稱】%logger
			%n【傳入信息內(nèi)容】%message
			%n=========="/>
		</layout>
	</appender>
</log4net>
</configuration>
<!--==================================layout節(jié)點的配置說明==================================-->
<!--                                                                        Made By YSL      -->
<!--        %m(message):輸出的日志消息,如ILog.Debug(…)輸出的一條消息                          -->
<!--        %n(new line):換行                                                                   -->
<!--        %d(datetime):輸出當前語句運行的時刻                                                 -->
<!--        %r(run time):輸出程序從運行到執(zhí)行到當前語句時消耗的毫秒數(shù)                           -->
<!--        %t(thread id):當前語句所在的線程ID                                                  -->
<!--        %p(priority): 日志的當前優(yōu)先級別,即DEBUG、INFO、WARN…等                           -->
<!--        %c(class):當前日志對象的名稱,例如:                                                -->
<!--               模式字符串為:%-10c -%m%n                                                    -->
<!--               代碼為:                                                                     -->
<!--        ILog log=LogManager.GetLogger(“Exam.Log”);                                        -->
<!--        log.Debug(“Hello”);                                                               -->
<!--            則輸出為下面的形式:                                                            -->
<!--        Exam.Log       - Hello                                                              -->
<!--        %L:輸出語句所在的行號                                                              -->
<!--        %F:輸出語句所在的文件名                                                            -->
<!--        %-數(shù)字:表示該項的最小長度,如果不夠,則用空格填充                                  -->

1.2.2 設(shè)置log4net.config配置文件屬性

  點擊log4net.config,將其文件屬性設(shè)為始終復(fù)制,如下圖:

image

1.3 在項目中引入該配置文件

  這里有兩種方式引入配置文件。

1.3.1 在項目的 AssemblyInfo.cs 中引入配置文件

  首先在項目中新建一個Config文件夾,將之前創(chuàng)建的log4net.config文件放入其中,隨后在 AssemblyInfo.cs 中添加如下語句:

image

1.3.2 在項目運行時動態(tài)引入配置文件

  使用固定語句引入配置文件,如下所示,其中,configFilePath 為配置文件的絕對路徑。

log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(configFilePath));

1.4 創(chuàng)建幫助類使用日志進行記錄

  我們首先創(chuàng)建名為 Log4Helper 的類,并使用固定的log4net.LogManager.GetLogger()語句實例化對應(yīng)的Log對象,然后調(diào)用其對應(yīng)的方法即可寫入日志。示例代碼如下:

Log4Helper代碼

 public class Log4Helper
 {
     private static readonly log4net.ILog logDefault = log4net.LogManager.GetLogger("DefaultLog");
     /// <summary>
     /// 測試默認配置信息輸出(輸出范圍做了限制)
     /// </summary>
     public static void TestDefaultLog()
     {
         logDefault.Debug("這是條調(diào)試信息");
         logDefault.Info("這是條提示信息");
         logDefault.Warn("這是條警告信息");
         logDefault.Error("這是條錯誤信息");
         logDefault.Fatal("這是條致命錯誤信息");
     }
     /// <summary>
     /// Log4Net初始化(可讀取自定義配置)
     /// </summary>
     /// <param name="configFilePath"></param>
     public static void Log4NetInit(string configFilePath)
     {
         log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(configFilePath));
     }
     /// <summary>
     /// 返回指定名稱的日志對象
     /// </summary>
     public static log4net.ILog Log(string appenderName)
     {
         return log4net.LogManager.GetLogger(appenderName);
     }
 }

1.5 在主程序中引用

  最后一步就是在主程序中引用 Log4Helper 中的日志記錄方法,如下所示:

private void Application_Startup(object sender, StartupEventArgs e)
 {
     Log4Helper.TestDefaultLog();
 }

  根據(jù)上面 log4net.config 配置中 file 節(jié)點中的地址,在項目中會生成 Log 文件夾,該文件夾下會生成類似 DefalutLog_2024-07-01.log 的文件。該文件名由 file 節(jié)點和 datePattern 節(jié)點兩部分組合而成,其中,staticLogFileName節(jié)點需要被設(shè)置為 false ,若為 true ,則當前最新日志文件名永遠為 file 節(jié)點中的名字,其余日志會根據(jù) datePattern 節(jié)點自動添加后綴。

  打開日志文件,會發(fā)現(xiàn)里面只有 WARN 警告信息,例如:

==========                     
【日志級別】WARN                      
【記錄時間】2024-07-01 00:18:28,828                     
【執(zhí)行時間】[53]毫秒                     
【執(zhí)行Log分類的名稱】DefaultLog              
【傳入信息內(nèi)容】這是條警告信息             
==========

  這是因為配置中的 filter 過濾節(jié)點,詳見注釋,將其注釋再次運行,則會正常顯示全部日志信息。

2. 配置文件節(jié)點詳解

  log4net的主要組成有四部分,分別是 Logger、Appender、Layout、Filter等,詳見下方。

2.1 Logger 節(jié)點配置詳解

  以上文的配置為例解釋:

<logger name="DefaultLog">
	<!--control log level: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF-->
	<!--如果沒有定義LEVEL的值,則缺省為DEBUG-->
	<level value="ALL" />
	<appender-ref ref="FileAppenderDefault"></appender-ref>
</logger>

  level 定義記錄的日志級別,就是說,你要記錄哪個級別以上的日志,級別由低到高依次是:

ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF

  如果你 level 定義 INFO,那么低于 INFO 級別以下的信息,將不會記入日志,啥意思呢?
  就是說,就算你在程序里,用 log.Debug() 來寫入一個日志信息,可是你在配置中指定 level 為 INFO,由于 DEBUG 級別低于 INFO,所以,不會被記入日志。這樣的處理非常靈活。

  在具體寫日志時,一般可以這樣理解日志等級:

FATAL(致命錯誤):記錄系統(tǒng)中出現(xiàn)的能使用系統(tǒng)完全失去功能,服務(wù)停止,系統(tǒng)崩潰等使系統(tǒng)無法繼續(xù)運行下去的錯誤。例如,數(shù)據(jù)庫無法連接,系統(tǒng)出現(xiàn)死循環(huán)。

ERROR(一般錯誤):記錄系統(tǒng)中出現(xiàn)的導(dǎo)致系統(tǒng)不穩(wěn)定,部分功能出現(xiàn)混亂或部分功能失效一類的錯誤。例如,數(shù)據(jù)字段為空,數(shù)據(jù)操作不可完成,操作出現(xiàn)異常等。

WARN(警告):記錄系統(tǒng)中不影響系統(tǒng)繼續(xù)運行,但不符合系統(tǒng)運行正常條件,有可能引起系統(tǒng)錯誤的信息。例如,記錄內(nèi)容為空,數(shù)據(jù)內(nèi)容不正確等。

INFO(一般信息):記錄系統(tǒng)運行中應(yīng)該讓用戶知道的基本信息。例如,服務(wù)開始運行,功能已經(jīng)開戶等。

DEBUG (調(diào)試信息):記錄系統(tǒng)用于調(diào)試的一切信息,內(nèi)容或者是一些關(guān)鍵數(shù)據(jù)內(nèi)容的輸出。

  appender-ref,要引用的 appender 的名字,由 Layout 控制輸出格式。

  最后還要說一個LogManager類,它用來管理所有的Logger。它的GetLogger靜態(tài)方法,可以獲得配置文件中相應(yīng)的Logger:

log4net.ILog log = log4net.LogManager.GetLogger("logger-name");

2.2 Appender 節(jié)點配置詳解

  以上文的 FileAppenderDefault 節(jié)點為例:

 FileAppenderDefault 節(jié)點配置

<!-- appender 定義日志輸出方式   將日志以回滾文件的形式寫到文件中。-->
	<appender name="FileAppenderDefault" type="log4net.Appender.RollingFileAppender">
		<!--絕對路徑-->
		<!--<file value="D:\KangarooLog.txt"></file>-->
		<!--日志輸出到exe程序這個相對目錄下-->
		<file value="../../Log/DefalutLog" />
		<!--相對路徑,在項目的根目錄下-->
		<!--以最后一個路徑為準,所以上面的絕對路徑下不會寫日志-->
		<!--<file value="./Log/Kangaroo.txt"></file>-->
		<!--防止多線程時不能寫Log,官方說線程非安全-->
		<!--實際使用時,本地測試正常,部署后沒有不能寫日志的情況-->
		<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
		<!--追加日志內(nèi)容,true后續(xù)輸出的日志會追加到之前的日志文件-->
		<appendToFile value="true" />
		<!--可以為:Once|Size|Date|Composite-->
		<!--Composite為Size和Date的組合-->
		<rollingStyle value="Composite" />
		<!--日志最大個數(shù),都是最新的-->
		<!--rollingStyle節(jié)點為Date時,該節(jié)點不起作用-->
		<!--rollingStyle節(jié)點為Size時,只能有value個日志-->
		<!--rollingStyle節(jié)點為Composite時,每天有value個日志-->
		<maxSizeRollBackups value="10" />
		<!--當備份文件時,為文件名加的后綴-->
		<!--后綴為*.txt時,例:AX.txt_2008-07-24.PxP  應(yīng)該是程序上的一個bug-->
		<!--后綴為*.TXT時,例:AX.txt_2008-07-25.TXT-->
		<datePattern value="_yyyy-MM-dd'.log'" />
		<!--每個文件的大小。只在混合方式與文件大小方式下使用。超出大小后在所有文件名后自動增加正整數(shù)重新命名,數(shù)字最大的最早寫入??捎玫膯挝?KB|MB|GB。不要使用小數(shù),否則會一直寫入當前日志-->
		<maximumFileSize value="10MB" />
		<!--置為true,當前最新日志文件名永遠為file節(jié)中的名字-->
		<staticLogFileName value="false" />
		<!--輸出級別在INFO和ERROR之間的日志-->
		<!--<filter type="log4net.Filter.LevelRangeFilter">
			<param name="LevelMin" value="INFO" />
			<param name="LevelMax" value="ERROR" />
		</filter>-->
		<!--必須結(jié)合起來用,第一個只過濾出WARN,第二個拒絕其它其它日志輸出-->
		<filter type="log4net.Filter.LevelMatchFilter">
			<param name="LevelToMatch" value="WARN" />
		</filter>
		<filter type="log4net.Filter.DenyAllFilter" />
		<layout type="log4net.Layout.PatternLayout">
			<conversionPattern value="%n==========
			%n【日志級別】%-5level
			%n【記錄時間】%date
			%n【執(zhí)行時間】[%r]毫秒
			%n【執(zhí)行Log分類的名稱】%logger
			%n【傳入信息內(nèi)容】%message
			%n=========="/>
		</layout>
	</appender>

  每個節(jié)點均寫有注釋,這里額外介紹下 appender 的輸出方式( type 屬性),如下所示:

 appender 輸出方式

AdoNetAppender              將日志記錄到數(shù)據(jù)庫中??梢圆捎肧QL和存儲過程兩種方式。
	AnsiColorTerminalAppender   將日志高亮輸出到ANSI終端。
	AspNetTraceAppender         能用asp.net中Trace的方式查看記錄的日志。
	BufferingForwardingAppender 在輸出到子Appenders之前先緩存日志事件。
	ConsoleAppender             將日志輸出到應(yīng)用程序控制臺。
	EventLogAppender            將日志寫到Windows Event Log。
	FileAppender                將日志輸出到文件。
	ForwardingAppender          發(fā)送日志事件到子Appenders。
	LocalSyslogAppender         將日志寫到local syslog service (僅用于UNIX環(huán)境下)。
	MemoryAppender              將日志存到內(nèi)存緩沖區(qū)。
	NetSendAppender             將日志輸出到Windows Messenger service.這些日志信息將在用戶終端的對話框中顯示。
	OutputDebugStringAppender   將日志輸出到Debuger,如果程序沒有Debuger,就輸出到系統(tǒng)Debuger。如果系統(tǒng)Debuger也不可用,將忽略消息。
	RemoteSyslogAppender        通過UDP網(wǎng)絡(luò)協(xié)議將日志寫到Remote syslog service。
	RemotingAppender            通過.NET Remoting將日志寫到遠程接收端。
	RollingFileAppender         將日志以回滾文件的形式寫到文件中。
	SmtpAppender                將日志寫到郵件中。
	SmtpPickupDirAppender       將消息以文件的方式放入一個目錄中,像IIS SMTP agent這樣的SMTP代理就可以閱讀或發(fā)送它們。
	TelnetAppender              客戶端通過Telnet來接受日志事件。
	TraceAppender               將日志寫到.NET trace 系統(tǒng)。
	UdpAppender                 將日志以無連接UDP數(shù)據(jù)報的形式送到遠程宿主或用UdpClient的形式廣播。

2.3 Filter 節(jié)點配置詳解

  filter只能作為 appender 的子元素,type 屬性表示 Filter 的類型。常用子元素 param 數(shù)量0個或多個,作用設(shè)置一些參數(shù)。具體例子詳見上文 2.2 Appender 節(jié)點配置詳解 。

  額外補充下 filter 的類型說明:

DenyAllFilter       阻止所有的日志事件被記錄
	LevelMatchFilter    只有指定等級的日志事件才被記錄
	LevelRangeFilter    日志等級在指定范圍內(nèi)的事件才被記錄
	LoggerMatchFilter   Logger名稱匹配,才記錄
	PropertyFilter      消息匹配指定的屬性值時才被記錄
	StringMathFilter    消息匹配指定的字符串才被記錄

2.4 Layout 節(jié)點配置詳解

  layout 節(jié)點只能作為 appender 的子元素。type 屬性表示 Layout 的類型。具體例子詳見上文 2.2 Appender 節(jié)點配置詳解 。

  額外補充 layout 節(jié)點的 type 屬性取值:

ExceptionLayout         只呈現(xiàn)日志事件中異常的文本信息
	PatternLayout           可以通過類型字符串來配置的布局
	RawPropertyLayout       從日志事件中提取屬性值
	RawTimeStampLayout      從日志事件中提取日期
	RawUtcTimeStampLayout   從日志事件中提取UTC日期
	SimpleLayout            很簡單的布局
	XmlLayout               把日志事件格式化為XML元素的布局

  這其中我們主要使用的還是PatternLayout 類型,而在 ConversionPattern 節(jié)點中,我們可以進一步的配置日志輸出格式,以 PatterLayout 的格式化字符串輸出為例:

 PatterLayout 的格式化字符串

    %m、%message         輸出的日志消息
    %d、%datetime        輸出當前語句運行的時刻,格式%date{yyyy-MM-dd HH:mm:ss,fff}
    %r、%timestamp       輸出程序從運行到執(zhí)行到當前語句時消耗的毫秒數(shù)
    %p、%level           日志的當前優(yōu)先級別
    %c、%logger          當前日志對象的名稱
    %L、%line            輸出語句所在的行號
    %F、%file            輸出語句所在的文件名,警告:只在調(diào)試的時候有效,調(diào)用本地信息會影響性能
    %a、%appdomain       引發(fā)日志事件的應(yīng)用程序域的名稱。
    %C、%class、%type    引發(fā)日志請求的類的全名,警告:會影響性能
    %exception           異常信息
    %u、%identity        當前活動用戶的名字,我測試的時候%identity返回都是空的。警告:會影響性能
    %l、%location        引發(fā)日志事件的名空間、類名、方法、行號。警告:會影響性能,依賴pdb文件
    %M、%method          發(fā)生日志請求的方法名,警告:會影響性能
    %n、%newline         換行符
    %x、%ndc             NDC(nested diagnostic context)
    %X、%mdc、%P、%properties  等介于 %property
    %property           輸出{log4net:Identity=, log4net:UserName=, log4net:HostName=} 
    %t、%thread         引發(fā)日志事件的線程,如果沒有線程名就使用線程號。
    %w、%username       當前用戶的WindowsIdentity,類似:HostName/Username。警告:會影響性能
    %utcdate            發(fā)生日志事件的UTC時間。例如:%utcdate{HH:mm:ss,fff}
    %%                  輸出一個百分號

  額外補充下 PatterLayout 格式修飾符:

格式修飾符對齊最小寬最大寬說明
%20logger右對齊20如果logger名不足20個字符,就在左邊補空格
%-20logger左對齊20如果logger名不足20個字符,就在右邊補空格
%.30logger左對齊30超過30個字符將截斷
%20.30logger右對齊2030logger名要在20到30之間,少了在左邊補空格,多了截斷
%-20.30logger左對齊2030logger名要在20到30之間,少了在右邊補空格,多了截斷

3. 如何輸出自定義類

  自定義擴展輸出,通過繼承 log4net.Layout.PatternLayout 和 log4net.Layout.Pattern.PatternLayoutConverter 類,使用 log4net.Core.LoggingEvent 類的方法得到了要輸出的 LogEntity 類的名稱。

  然后通過反射得到各個屬性的值,使用 PatternLayout 類 AddConverter 方法傳入得到的值,在 PatternLayoutConverter 中對其進行處理。注意配置文件 Appender 中的 Layout type 用到的類的命名空間以及類名,要同步更改為自定義類的。詳見示例:

自定義拓展類的代碼

namespace WPFPractice
{
    public class CustomLayout : log4net.Layout.PatternLayout
    {
        public CustomLayout()
        {
            this.AddConverter("Custom", typeof(CustomConvert));
        }
    }
    public class CustomConvert : log4net.Layout.Pattern.PatternLayoutConverter
    {
        protected override void Convert(System.IO.TextWriter writer, log4net.Core.LoggingEvent loggingEvent)
        {
            if (!string.IsNullOrEmpty(Option))
            {
                object obj = loggingEvent.MessageObject;
                if (obj != null)
                {
                    PropertyInfo info = obj.GetType().GetProperty(Option);
                    if (info != null)
                    {
                        object cusMsg = info.GetValue(obj, null);
                        writer.Write(cusMsg);
                    }
                }
            }
        }
    }
}

  與之對應(yīng)的,我們的配置文件也添加以下代碼:

配置文件新增代碼

<logger name="CustomLog">
		<!--control log level: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF-->
		<!--如果沒有定義LEVEL的值,則缺省為DEBUG-->
		<level value="ALL" />
		<appender-ref ref="FileAppenderCustom"></appender-ref>
	</logger>
	<appender name="FileAppenderCustom" type="log4net.Appender.RollingFileAppender">
		<file value="../../Log/CustomLog" />
		<appendToFile value="true" />
		<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
		<rollingStyle value="Composite" />
		<maxSizeRollBackups value="5" />
		<datePattern value="_yyyy-MM-dd'.log'" />
		<maximumFileSize value="10MB" />
		<staticLogFileName value="false" />
		<layout type="WPFPractice.CustomLayout">
			<conversionPattern value="%n==========
			%n【日志級別】%-5level
			%n【記錄時間】%date
			%n【執(zhí)行時間】[%r]毫秒
			%n【執(zhí)行線程ID】[%thread]
			%n【執(zhí)行Log分類的名稱】%logger
			%n【耗材類型名】%Custom{LabTypeName}
			%n【耗材名】%Custom{LabName}
			%n【耗材編號】%Custom{LabNumber}
			%n【是否吸頭】%Custom{IsTip}
			%n【傳入信息內(nèi)容/類型】%message
			%n==========" />
		</layout>
	</appender>

  接下來我們新建一個類 LabwareModel,并在幫助類 Log4Helper 中添加調(diào)用 CustomLog 的方法,來測試能否輸出自定義類 LabwareModel 中的內(nèi)容。

自定義類 LabwareModel

public class LabwareModel
{
    public string LabTypeName { get; set; } = "采樣管";
    public string LabName { get; set; } = "Custom_2000ul";
    public double LabNumber { get; set; } = 200;
    public int IsTip { get; set; } = 1;
}

  幫助類 Log4Helper 如下:

查看幫助類 Log4Helper

 private static readonly log4net.ILog logDefault = log4net.LogManager.GetLogger("DefaultLog");
 /// <summary>
 /// 生成默認實例
 /// </summary>
 /// <returns></returns>
 public static LabwareModel GetLabwareModel() 
 {
     LabwareModel labwareModel = new LabwareModel();
     return labwareModel;
 }
 /// <summary>
 /// 測試自定義配置信息輸出
 /// </summary>
 public static void TestCustomLog()
 {
     var labware = GetLabwareModel();
     logCustom.Debug("這是條調(diào)試信息");
     logCustom.Info("這是條提示信息");
     logCustom.Warn("這是條警告信息");
     logCustom.Error(labware);
     logCustom.Fatal("這是條致命錯誤信息");
 }

  在主程序中調(diào)用進行測試:

private void Application_Startup(object sender, StartupEventArgs e)
{
    Log4Helper.TestCustomLog();
    Log4Helper.TestDefaultLog();
}

  根據(jù)上面 FileAppenderCustom 配置中 file 節(jié)點中的地址,在項目中會生成 Log 文件夾,該文件夾下會生成類似 CustomLog_2024-07-01.log 的文件。打開文件會看到輸出內(nèi)容如下:

日志輸出內(nèi)容

==========           
【日志級別】DEBUG                  
【記錄時間】2024-07-01 00:18:28,812                  
【執(zhí)行時間】[37]毫秒           
【執(zhí)行線程ID】[1]           
【執(zhí)行Log分類的名稱】CustomLog           
【耗材類型名】           
【耗材名】           
【耗材編號】           
【是否吸頭】           
【傳入信息內(nèi)容/類型】這是條調(diào)試信息           
==========
==========           
【日志級別】INFO                   
【記錄時間】2024-07-01 00:18:28,823                  
【執(zhí)行時間】[48]毫秒           
【執(zhí)行線程ID】[1]           
【執(zhí)行Log分類的名稱】CustomLog           
【耗材類型名】           
【耗材名】           
【耗材編號】           
【是否吸頭】           
【傳入信息內(nèi)容/類型】這是條提示信息           
==========
==========           
【日志級別】WARN                   
【記錄時間】2024-07-01 00:18:28,825                  
【執(zhí)行時間】[50]毫秒           
【執(zhí)行線程ID】[1]           
【執(zhí)行Log分類的名稱】CustomLog           
【耗材類型名】           
【耗材名】           
【耗材編號】           
【是否吸頭】           
【傳入信息內(nèi)容/類型】這是條警告信息           
==========
==========           
【日志級別】ERROR                  
【記錄時間】2024-07-01 00:18:28,826                  
【執(zhí)行時間】[51]毫秒           
【執(zhí)行線程ID】[1]           
【執(zhí)行Log分類的名稱】CustomLog           
【耗材類型名】采樣管           
【耗材名】Custom_2000ul           
【耗材編號】200           
【是否吸頭】1           
【傳入信息內(nèi)容/類型】WPFPractice.LabwareModel           
==========
==========           
【日志級別】FATAL                  
【記錄時間】2024-07-01 00:18:28,828                  
【執(zhí)行時間】[53]毫秒           
【執(zhí)行線程ID】[1]           
【執(zhí)行Log分類的名稱】CustomLog           
【耗材類型名】           
【耗材名】           
【耗材編號】           
【是否吸頭】           
【傳入信息內(nèi)容/類型】這是條致命錯誤信息           
==========

  以上就是關(guān)于 Log4Net 配置詳解。

到此這篇關(guān)于Log4Net配置詳解及輸出自定義消息類示例 的文章就介紹到這了,更多相關(guān)Log4Net配置輸出自定義消息類內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論