來使用最小鎖定模型(minimallockingmodel),以允許多個進程可以寫入同一個文件。各種appender說明:在log4net的配置中,appender是最重要的部分,一般來說,每一種appender都表示一種日志的輸出介質,如" />

欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

log4net的配置之appender

系統 2616 0

由于log4net默認情況下會獨占日志文件,該文件不能被File.Open。
可以通過增加配置:< lockingModel type=" log4net .Appender.FileAppender+MinimalLock" />來使用最小鎖定模型(minimal locking model),以允許多個進程可以寫入同一個文件。


各種appender說明:

在log4net的配置中,appender是最重要的部分,一般來說,每一種appender都表示一種日志的輸出介質,如日志文件、EvengLog、數據庫、控制臺、郵件、ASP.NET頁面等。

本文對各種內置的appender的配置提供了示例,但卻遠稱不上詳盡。要想了解每一種appender的參數和選項的說明,請參看該appender的SDK文檔。
?

以下示例都是.NET 2.0下進行的, log4net的版本為1.2.10。

AdoNetAppender

詳情參考 log4net.Appender. AdoNetAppender SDK文檔 。

AdoNetAppender的相關配置內容取決于目標數據庫的provider。下面僅提供SQL Server 2000的例子。
?

首先建立數據表:

?

CREATE ? TABLE ? [ dbo ] . [ Log ]
?(
????
[ Id ] ? [ int ] ? IDENTITY ?( 1 ,? 1 )? NOT ? NULL ,
????
[ Date ] ? [ datetime ] ? NOT ? NULL ,
????
[ Thread ] ? [ varchar ] ?( 255 )? NOT ? NULL ,
????
[ Level ] ? [ varchar ] ?( 50 )? NOT ? NULL ,
????
[ Logger ] ? [ varchar ] ?( 255 )? NOT ? NULL ,
????
[ Message ] ? [ varchar ] ?( 4000 )? NOT ? NULL ,
????
[ Exception ] ? [ varchar ] ?( 2000 )? NULL
)


然后添加配置:

?

< appender? name ="AdoNetAppender" ?type ="log4net.Appender.AdoNetAppender" >
????
< bufferSize? value ="2" ? />
????
< connectionType? value ="System.Data.SqlClient.SqlConnection,?System.Data,?Version=2.0.0.0,?
???? Culture=Neutral,?PublicKeyToken=b77a5c561934e089"
? />
????
< connectionString? value ="server=(local);database=TestBase;integrated?security=false;persist?security?info=True;UID=sa;PWD=" ? />
????
< commandText? value ="INSERT?INTO?Log?([Date],[Thread],[Level],[Logger],[Message],[Exception])?VALUES?(@log_date,?@thread,?@log_level,?@logger,?@message,?@exception)" ? />
????
< parameter >
????????
< parameterName? value ="@log_date" ? />
????????
< dbType? value ="DateTime" ? />
????????
< layout? type ="log4net.Layout.RawTimeStampLayout" ? />
????
</ parameter >
????
< parameter >
????????
< parameterName? value ="@thread" ? />
????????
< dbType? value ="String" ? />
????????
< size? value ="255" ? />
????????
< layout? type ="log4net.Layout.PatternLayout" >
????????????
< conversionPattern? value ="%thread" ? />
????????
</ layout >
????
</ parameter >
????
< parameter >
????????
< parameterName? value ="@log_level" ? />
????????
< dbType? value ="String" ? />
????????
< size? value ="50" ? />
????????
< layout? type ="log4net.Layout.PatternLayout" >
????????????
< conversionPattern? value ="%level" ? />
????????
</ layout >
????
</ parameter >
????
< parameter >
????????
< parameterName? value ="@logger" ? />
????????
< dbType? value ="String" ? />
????????
< size? value ="255" ? />
????????
< layout? type ="log4net.Layout.PatternLayout" >
????????????
< conversionPattern? value ="%logger" ? />
????????
</ layout >
????
</ parameter >
????
< parameter >
????????
< parameterName? value ="@message" ? />
????????
< dbType? value ="String" ? />
????????
< size? value ="4000" ? />
????????
< layout? type ="log4net.Layout.PatternLayout" >
????????????
< conversionPattern? value ="%message" ? />
????????
</ layout >
????
</ parameter >
????
< parameter >
????????
< parameterName? value ="@exception" ? />
????????
< dbType? value ="String" ? />
????????
< size? value ="2000" ? />
????????
< layout? type ="log4net.Layout.ExceptionLayout" ? />
????
</ parameter >
</ appender >


bufferSize 表示批處理的日志事件,可以避免每次日志事件都訪問數據庫; ConnectionType 指定了要使用的IDbConnection的完全限定類型名稱; connectionString 表示連接字符串; CommandText 是SQL語句或存儲過程;最后一組 parameter 節點描述了SQL語句或存儲過程需要的參數。

?

AspNetTraceAppender ?

詳情參考 log4net.Appender.AspNetTraceAppender SDK 文檔 。?

?

< appender? name ="AspNetTraceAppender" ?type ="log4net.Appender.AspNetTraceAppender" ? >
????
< layout? type ="log4net.Layout.PatternLayout" >
????????
< conversionPattern? value ="%date?[%thread]?%-5level?%logger?[%property{NDC}]?-?%message%newline" ? />
????
</ layout >
</ appender >


這段配置可將日志信息輸出到頁面的Trace上下文環境。如果日志的級別低于WARN,會以System.Web.TraceContext.Write方法輸出;如果級別為WARN或WARN以上則會以System.Web.TraceContext.Warn方法輸出,下圖中的日志信息的不同顏色可以說明這一點。效果圖如下:

log4net的配置之appender

這在進行頁面調試的時候可是很方便的。

BufferingForwardingAppender

詳情參考 log4net.Appender.BufferingForwardingAppender SDK 文檔 。

< appender? name ="BufferingForwardingAppender" ?type ="log4net.Appender.BufferingForwardingAppender" ? >
????
< bufferSize? value ="5" />
????
< lossy? value ="true" ? />
????
< evaluator? type ="log4net.Core.LevelEvaluator" >
????????
< threshold? value ="WARN" />
????
</ evaluator >
????
< appender-ref? ref ="LogFileAppender" ? />
????
< appender-ref? ref ="AspNetTraceAppender" ? />
</ appender >


BufferingForwardingAppender的主要作用是將輸出到指定類型(這里是LogFileAppender)的Appender的日志信息進行緩存。bufferSize屬性指定了緩存的數量,如果value為5,那么將在信息量達到6條的時候,把這些日志批量輸出。appender-ref屬性指定了緩存的Appender類型,同root節點一樣,這里可以指定多個。

ColoredConsoleAppender
?

詳情參考 log4net.Appender.ColoredConsoleAppender SDK 文檔 。

ColoredConsoleAppender將日志信息輸出到控制臺。默認情況下,日志信息被發送到控制臺標準輸出流。下面這個示例演示了如何高亮顯示Error信息。

< appender? name ="ColoredConsoleAppender" ?type ="log4net.Appender.ColoredConsoleAppender" >
????
< mapping >
????????
< level? value ="ERROR" ? />
????????
< foreColor? value ="White" ? />
????????
< backColor? value ="Red,?HighIntensity" ? />
????
</ mapping >
??? < layout? type ="log4net.Layout.PatternLayout" >
????????
< conversionPattern? value ="%date?[%thread]?%-5level?%logger?[%property{NDC}]?-?%message%newline" ? />
????
</ layout >
</ appender >


效果如下:


還可以為不同的級別指定不同的顏色:

< appender? name ="ColoredConsoleAppender" ?type ="log4net.Appender.ColoredConsoleAppender" >
????
< mapping >
????????
< level? value ="ERROR" ? />
????????
< foreColor? value ="White" ? />
????????
< backColor? value ="Red,?HighIntensity" ? />
????
</ mapping >
????
< mapping >
????????
< level? value ="DEBUG" ? />
????????
< backColor? value ="Green" ? />
????
</ mapping >
????
< layout? type ="log4net.Layout.PatternLayout" >
????????
< conversionPattern? value ="%date?[%thread]?%-5level?%logger?[%property{NDC}]?-?%message%newline" ? />
????
</ layout >
</ appender >


效果如下:



ConsoleAppender
?

詳情參考 log4net.Appender.ConsoleAppender SDK 文檔
?

ConsoleAppender將日志信息輸出到控制臺標準輸出流。

< appender? name ="ConsoleAppender" ?type ="log4net.Appender.ConsoleAppender" ? >
????
< layout? type ="log4net.Layout.PatternLayout" >
????????
< param? name ="ConversionPattern" ?value ="%d?[%t]?%-5p?%c?[%x]?-?%m%n" ? />
????
</ layout >
</ appender >


EventLogAppender ?

詳情參考 log4net.Appender.EventLogAppender SDK 文檔
?

EventLogAppender將日志寫入本地機器的應用程序事件日志中。默認情況下,該日志的源(Source)是AppDomain.FriendlyName,也可以手動指定其它名稱。

< appender? name ="EventLogAppender" ?type ="log4net.Appender.EventLogAppender" ? >
????
< layout? type ="log4net.Layout.PatternLayout" >
????????
< param? name ="ConversionPattern" ?value ="%d?[%t]?%-5p?%c?[%x]?-?%m%n" ? />
????
</ layout >
</ appender >

FileAppender

詳情參考 log4net.Appender.File Appender SDK 文檔 。
?

FileAppender將日志信息輸出到指定的日志文件。

<!--[if !vml]-->

< appender? name ="LogFileAppender" ?type ="log4net.Appender.FileAppender" ? >
????
< param? name ="File" ?value ="WebUtilClient.log" ? />
????
< param? name ="AppendToFile" ?value ="true" ? />
????
< layout? type ="log4net.Layout.PatternLayout" >
????????
< param? name ="ConversionPattern" ?value ="%d?[%t]?%-5p?%c?[%x]?-?%m%n" ? />
????
</ layout >
</ appender >


File指定了文件名稱,可以使用相對路徑,此時日志文件的位置取決于項目的類型(如控制臺、Windows Forms、ASP.NET等);也可以使用絕對路徑;甚至可以使用環境變量,如<file value="${TMP}\log-file.txt" />。
AppendToFile指定是追加到還是覆蓋掉已有的日志文件。
還可以添加如下屬性<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />來使用最小鎖定模型(minimal locking model),以允許多個進程可以寫入同一個文件。

ForwardingAppender ?

詳情參考 log4net.Appender.ForwardingAppender SDK 文檔

ForwardingAppender可以用來為一個Appender指定一組約束。看下面這個示例:
?

< appender? name ="ForwardingAppender" ?type ="log4net.Appender.ForwardingAppender" ? >
????
< threshold? value ="WARN" />
????
< appender-ref? ref ="ConsoleAppender" ? />
</ appender >


在這個示例中,為ConsoleAppender添加了約束,Threshold為WARN。這意味著對于一條日志信息,如果直接使用ConsoleAppender,那么不論它是什么級別,總會進行輸出,而如果使用這個ForwardingAppender,則只有那些WARN或WARN以上的日志才會發送到ConsoleAppender。?

MemoryAppender

詳情參考 log4net.Appender.MemoryAppender SDK 文檔 。

似乎不應該使用配置文件來配置MemoryAppender,但如果你非要這么做,看看這個示例(未驗證):
?

< appender? name ="MemoryAppender" ?type ="log4net.Appender.MemoryAppender" >
????
< onlyFixPartialEventData? value ="true" ? />
</ appender >


NetSendAppender ?

詳情參考 log4net.Appender.NetSendAppender SDK 文檔 。

NetSendAppender向特定用戶的屏幕發送消息(未驗證)。
?

< appender? name ="NetSendAppender" ?type ="log4net.Appender.NetSendAppender" >
????
< threshold? value ="ERROR" ? />
????
< server? value ="Anders" ? />
????
< recipient? value ="xym" ? />
????
< layout? type ="log4net.Layout.PatternLayout" >
????????
< conversionPattern? value ="%date?[%thread]?%-5level?%logger?[%property{NDC}]?-?%message%newline" ? />
????
</ layout >
</ appender >


OutputDebugStringAppender

詳情參考 log4net.Appender.OutputDebugStringAppender SDK 文檔 。?

下面這個例子描述了如何配置該Appender以向OutputDebugString API寫入日志(未驗證)。
?

?

< appender? name ="OutputDebugStringAppender" ?type ="log4net.Appender.OutputDebugStringAppender" ? >
????
< layout? type ="log4net.Layout.PatternLayout" >
????????
< conversionPattern? value ="%date?[%thread]?%-5level?%logger?[%property{NDC}]?-?%message%newline" ? />
????
</ layout >
</ appender >


RemotingAppender

詳情參考 log4net.Appender.RemotingAppender SDK 文檔

RemotingAppender向特定的Sink發送日志信息(未驗證):

<!--[if !vml]-->

< appender? name ="RemotingAppender" ?type ="log4net.Appender.RemotingAppender" ? >
????
< sink? value ="tcp://localhost:8085/LoggingSink" ? />
????
< lossy? value ="false" ? />
????
< bufferSize? value ="95" ? />
????
< onlyFixPartialEventData? value ="true" ? />
</ appender >

RollingFileAppender

詳情參考 log4net.Appender.RollingFileAppender SDK 文檔 。

RollingFileAppender以FileAppender為基礎,與后者有著相同的配置選項。

下面這個例子演示了如何配置RollingFileAppender以寫入log.txt文件。寫入的文件名總是為log.txt(StaticLogFileName參數指定為true);根據文件大?。≧ollingStyle)來生成新的文件;最多保存有10個文件(MaxSizeRollBackups屬性,而且一旦寫滿10個文件,就不再寫入日志了),每個文件最大為10KB。這些文件名稱為log.txt.1, log.txt.2…等。
?

< appender? name ="RollingFileAppender" ?type ="log4net.Appender.RollingFileAppender" >
????
< param? name ="File" ?value ="log\Log.txt" ? />
????
< param? name ="AppendToFile" ?value ="true" ? />
????
< param? name ="MaxSizeRollBackups" ?value ="10" ? />
????
< param? name ="MaximumFileSize" ?value ="5MB" ? />
????
< param? name ="RollingStyle" ?value ="Size" ? />
????
< param? name ="StaticLogFileName" ?value ="true" ? />
????
< layout? type ="log4net.Layout.PatternLayout" >
????????
< param? name ="ConversionPattern" ?value ="%d?[%t]?%-5p?%c?[%x]?-?%m%n" ? />
????
</ layout >
</ appender >


SmtpAppender

詳情參考 log4net.Appender.SmtpAppender SDK 文檔 。

SmtpAppender通過Smtp郵件服務器發送日志信息:
?

???????? < appender? name ="SmtpAppender" ?type ="log4net.Appender.SmtpAppender" >
????????????
< authentication? value ="Basic" ? />
????????????
< to? value ="anderscui@tom.com" ? />
????????????
< from? value ="anderscui@163.com" ? />
????????????
< username? value ="anderscui" ? />
????????????
< password? value ="password" ? />
????????????
< subject? value ="test?logging?message" ? />
????????????
< smtpHost? value ="smtp.163.com" ? />
????????????
< bufferSize? value ="512" ? />
????????????
< lossy? value ="true" ? />
????????????
< evaluator? type ="log4net.Core.LevelEvaluator" >
????????????????
< threshold? value ="WARN" />
????????????
</ evaluator >
????????????
< layout? type ="log4net.Layout.PatternLayout" >
????????????????
< conversionPattern? value ="%newline%date?[%thread]?%-5level?%logger?[%property{NDC}]?-?%message%newline%newline%newline" ? />
????????????
</ layout >
????????
</ appender >


將其中的to、from、username、password、subject、smtpHost配置正確才可能發送成功。bufferSize可將多條信息打包在一個郵件中。evaluator可以對日志進行過濾。

SmtpPickupDirAppender

詳情參考 log4net.Appender.SmtpPickupDirAppender SDK 文檔 。

配置與SmtpAppender類似,但要把SmtpHost換為PickupDir(未驗證)。
?

< appender? name ="SmtpPickupDirAppender" ?type ="log4net.Appender.SmtpPickupDirAppender" >
????
< to? value ="to@domain.com" ? />
????
< from? value ="from@domain.com" ? />
????
< subject? value ="test?logging?message" ? />
????
< pickupDir? value ="C:\SmtpPickup" ? />
????
< bufferSize? value ="512" ? />
????
< lossy? value ="true" ? />
????
< evaluator? type ="log4net.Core.LevelEvaluator" >
????????
< threshold? value ="WARN" />
????
</ evaluator >
????
< layout? type ="log4net.Layout.PatternLayout" >
????????
< conversionPattern? value ="%newline%date?[%thread]?%-5level?%logger?[%property{NDC}]?-?%message%newline%newline%newline" ? />
????
</ layout >
</ appender >

TraceAppender

詳情參考 log4net.Appender.TraceAppender SDK 文檔

TraceAppender將日志信息寫入System.Diagnostics.Trace系統(出現在輸出窗口)。

< appender? name ="TraceAppender" ?type ="log4net.Appender.TraceAppender" >
????
< layout? type ="log4net.Layout.PatternLayout" >
????????
< conversionPattern? value ="%date?[%thread]?%-5level?%logger?[%property{NDC}]?-?%message%newline" ? />
????
</ layout >
</ appender >


UdpAppender

詳情參考 log4net.Appender.UdpAppender SDK 文檔

下例演示了如何配置UdpAppender(未驗證):

< appender? name ="UdpAppender" ?type ="log4net.Appender.UdpAppender" >
????
< localPort? value ="8080" ? />
????
< remoteAddress? value ="224.0.0.1" ? />
????
< remotePort? value ="8080" ? />
????
< layout? type ="log4net.Layout.PatternLayout,?log4net" >
????????
< conversionPattern? value ="%-5level?%logger?[%property{NDC}]?-?%message%newline" ? />
????
</ layout >
</ appender >


上面有若干個Appender標注為"未驗證"的,是指這些Appender極少用到,或者在我的機器上沒能實現

log4net的配置之appender


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产婷婷色综合AV蜜臀AV | 国产主播福利精品一区二区 | 国产福利不卡视频在免费播放 | 国产毛片久久精品 | 日产国产精品久久久久久 | 9久9久女女热精品视频免费观看 | 久热免费在线视频 | 国产日本三级欧美三级妇三级四 | 男女交配视频网站 | 日韩精品在线一区 | 欧美video | 五月天激情视频 | 国产女人成人精品视频 | 剑来在线观看 | 毛片久久| 日韩一级欧美一级毛片在线 | 国产精品久久久久国产精品 | 久久婷婷色一区二区三区 | 亚洲欧美国产一区二区三区 | 国产剧情一区二区三区 | 成人国产精品 | 欧美日韩国产一区二区三区不卡 | 九九精品免费 | 国产精品一区二区三区四区 | 小视频网址 | 免费国产成人午夜在线观看 | 最新欧美精品一区二区三区 | 欧美精品成人a多人在线观看 | 色综合久久伊人 | 国产高清视频a在线大全 | 国产一级黄色网 | 古装三级在线观看 | 免费国产va在线观看视频 | 成人a视频片在线观看免费 中文字幕三区 | 哪里能看毛片 | 三级国产精品一区二区 | 毛片毛片毛片毛片毛片毛片毛片 | 天天拍天天干天天操 | 香港三级日本三级韩国a | 一区二区三区四区五区中文字幕 | www.奇米影视.com |