log4net按照不同的【LEVEL】級(jí)別輸出到不同文件
Log4Net五步走
Log4Net主頁: http://logging.apache.org/log4net/ ,下載Log4Net
Log4Net主要由Logger, Appender, Filter, Layout 4個(gè)組件構(gòu)成, 一般情況下后3個(gè)組件在配置文件中配置.
1. LogNet工程引用log4net.dll
2.定義配置文件,可以配置在web.config,也可以單獨(dú)配置在xml文件里面
3.雙擊打開AssemblyInfo.cs在最后添加
[assembly: log4net.Config.XMLConfigurator(ConfigFile = “l(fā)og4net.config”, Watch = true)]
3.創(chuàng)建或獲取日志對(duì)象
log4net.ILog log = log4net.LogManager.GetLogger(”logger-name”);
可以定義多個(gè)log對(duì)象,每個(gè)log對(duì)象分別取配置文件不同的<logger>標(biāo)記,每個(gè)<logger>分別取不同的appender
這樣就可以用不同的log對(duì)象把日志輸出到不同的文件或者其它介質(zhì),
4.輸出日志信息
log.debug()
Log4net主要由五個(gè)部分組成,分別為L(zhǎng)ogger,Appenders, Filters, Layouts 和Object Renders。
一、Logger(日志)
1. 記錄日志的分類:
Log4net能夠以多種方式輸出日志。支持的日志輸出常用的主要媒介有數(shù)據(jù)庫(包括MS SQL Server, Access, Oracle9i,Oracle8i,DB2,SQLite,控制臺(tái),文件,事件日志(可以用事件查看器查看)和郵件等多種方式。
2. 日志的級(jí)別
Log4net支持多種級(jí)別的日志。優(yōu)先級(jí)從高到低依次排列如下:
FATAL > ERROR > WARN > INFO > DEBUG
此外還有ALL(允許所有的日志請(qǐng)求)和OFF(拒絕所有的日志請(qǐng)求)這兩種特殊的級(jí)別。
二、Appenders
Appenders決定日志輸出的方式。
Appenders必須實(shí)現(xiàn)log4net.Appenders.IAppender接口。
Log4net目前支持的輸出方式包括:
1、AdoNetAppender
將日志記錄到數(shù)據(jù)庫中??梢圆捎肧QL和存儲(chǔ)過程兩種方式。
2、AnsiColorTerminalAppender
在ANSI 窗口終端寫下高亮度的日志事件。
3、AspNetTraceAppender
能用asp.net中Trace的方式查看記錄的日志。
4、BufferingForwardingAppender
在輸出到子Appenders之前先緩存日志事件。
5、ConsoleAppender
將日志輸出到控制臺(tái)。
6、EventLogAppender
將日志寫到Windows Event Log.
7、FileAppender
將日志寫到文件中。
8、LocalSyslogAppender
將日志寫到local syslog service (僅用于UNIX環(huán)境下).
9、MemoryAppender
將日志存到內(nèi)存緩沖區(qū)。
10、NetSendAppender
將日志輸出到Windows Messenger service.這些日志信息將在用戶終端的對(duì)話框中顯示。
11、RemoteSyslogAppender
通過UDP網(wǎng)絡(luò)協(xié)議將日志寫到Remote syslog service。
12、RemotingAppender
通過.NET Remoting將日志寫到遠(yuǎn)程接收端。
13、RollingFileAppender
將日志以回滾文件的形式寫到文件中。
14、SmtpAppender
將日志寫到郵件中。
15、TraceAppender
將日志寫到.NET trace 系統(tǒng)。
16、UdpAppender
將日志connectionless UDP datagrams的形式送到遠(yuǎn)程宿主或以UdpClient的形式廣播。
三、Filters
Appender對(duì)象將日志以缺省的方式傳到輸出流,然后Filter可以按照不同的標(biāo)準(zhǔn)控制日志的輸出。Filter可以再配置文件中配置。最簡(jiǎn)單的形式是在appender中寫明一個(gè)Threshold.這樣只有級(jí)別大于或等于此Threshold的日志才被記錄。
Filters必須實(shí)現(xiàn)log4net.Filters.IFilter接口。
四、Layouts
Layouts控制日志顯示的格式樣式。日志的顯示格式如下:
"%timestamp [%thread] %-5level %logger - %message%newline"
Timestamp: 表示程序已經(jīng)開始執(zhí)行的時(shí)間。 單位[毫秒]。
Thread:執(zhí)行當(dāng)前代碼的線程。
Level:日志的級(jí)別。
Logger:日志相關(guān)請(qǐng)求的名稱。
Message: 日志消息。
Layouts還可以控制日志的輸出樣式,比如以普通形式或以xml等形式輸出。
五、Object Renderers
這是很重要的一項(xiàng),log4net將按照用戶定義的標(biāo)準(zhǔn)輸出日志消息。
Object Renders必須實(shí)現(xiàn)log4net.ObjectRenderer.IObjectRenerer接口
Logger
負(fù)責(zé)產(chǎn)生日志消息,可以在代碼中調(diào)用
Logger的Level屬性可以設(shè)以下值,由高到低為OFF,FATAL,
ERROR,WARN,INFO,DEBUG,ALL. 高于設(shè)定值方法都能寫入日志,
Off所有的寫入方法都不寫到日志里,ALL則相反。例如當(dāng)我們?cè)O(shè)成Info時(shí),logger.Debug就會(huì)被忽略而不寫入文件,但是FATAL,
ERROR,WARN,INFO會(huì)被寫入,因?yàn)樗麄兊燃?jí)高于INFO;
Appender
負(fù)責(zé)向存儲(chǔ)介質(zhì)中追加日志, 一般在配置文件中配置,根據(jù)保存日志介質(zhì)的不同Appender有多種,
比如:AdoNetAppender,EventLogAppender,RollingFileAppender等.參見:
http://logging.apache.org/log4net/release/config-examples.HTML
.
Filter
負(fù)責(zé)過濾日志, 一般和Appender聯(lián)合使用,在配置文件中配置
Layout
負(fù)責(zé)日志消息的格式, 一般和Appender聯(lián)合使用,在配置文件中配置。
----------------------------------------------------------------------
log4net標(biāo)簽的框架如下, 該標(biāo)簽下有root, logger, appender等標(biāo)簽
root標(biāo)簽
所有的logger都從root繼承, root本身也是一個(gè)logger
logger標(biāo)簽
每個(gè)logger標(biāo)簽代表一個(gè)logger,appender-ref表示該logger產(chǎn)生的日志消息傳遞給哪個(gè)appender,一個(gè)logger可以把相同的消
息傳遞給多個(gè)appender記錄
appender標(biāo)簽
每個(gè)appender表示一個(gè)日志的存儲(chǔ)位置,name不能和type一樣
設(shè)定參數(shù)
日志根據(jù)日期滾動(dòng)
日志文件名格式為
日志文件名是否是固定不變的
layout type="log4net.Layout.PatternLayout"
日志消息的格式, 表示換行
param name=”ConversionPattern” value=”%d [%t] %-5p %c - %m%n”
param name=”Header” value=” ———————-header————————– ”
param name=”Footer” value=” ———————-footer————————– ”
%m(message):輸出的日志消息,如ILog.Debug(…)輸出的一條消息
%n(new line):換行
%d(datetime):輸出當(dāng)前語句運(yùn)行的時(shí)刻
%r(run time):輸出程序從運(yùn)行到執(zhí)行到當(dāng)前語句時(shí)消耗的毫秒數(shù)
%t(thread id):當(dāng)前語句所在的線程ID
%p(priority): 日志的當(dāng)前優(yōu)先級(jí)別,即DEBUG、INFO、WARN…等
%c(class):當(dāng)前日志對(duì)象的名稱
%L:輸出語句所在的行號(hào)
%F:輸出語句所在的文件名
%-數(shù)字:表示該項(xiàng)的最小長(zhǎng)度,如果不夠,則用空格填充
-------------------------------------------------------------------------------------------------------------------------------------
log4net>
<loggername="loggerAX">
<!--controlloglevel:ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF-->
<!--如果沒有定義LEVEL的值,則缺省為DEBUG-->
<levelvalue="ALL"/>
<appender-refref="SmtpAppenderAX"></appender-ref>
<appender-refref="FileAppenderAX"></appender-ref>
</logger>
<appendername="SmtpAppenderAX"type="log4net.Appender.SmtpAppender">
<tovalue="AXzhz@163.com"></to>
<fromvalue="AXzhz@163.com"/>
<subjectvalue="AX'TestLogMessage"/>
<smtpHostvalue="smtp.163.com"/>
<usernamevalue="AXzhz"/>
<passwordvalue="110"/>
<bufferSizevalue="2048"/>
<!--超長(zhǎng)部分是否丟棄-->
<lossyvalue="false"/>
<!--evaluator時(shí)好時(shí)壞,靠不住,還是用filter實(shí)在-->
<!--<evaluatortype="log4net.Core.LevelEvaluator">
<thresholdvalue="ERROR"/>
</evaluator>-->
<!--<evaluatortype="log4net.Core.LevelEvaluator,log4net">
<thresholdvalue="WARN"/>
</evaluator>-->
<!--將導(dǎo)致不能寫日志-->
<!--<filtertype="log4net.Filter.DenyAllFilter"/>-->
<!--輸出級(jí)別在WARN和OFF之間的日志-->
<filtertype="log4net.Filter.LevelRangeFilter">
<paramname="LevelMin"value="WARN"/>
<paramname="LevelMax"value="OFF"/>
</filter>
<layouttype="log4net.Layout.PatternLayout">
<conversionPatternvalue="%newline%date[%thread]%-5level%logger[%property{NDC}]:%newline%message%newline"/>
</layout>
</appender>
<appendername="FileAppenderAX"type="log4net.Appender.RollingFileAppender">
<!--絕對(duì)路徑-->
<filevalue="D://AX.txt"></file>
<!--相對(duì)路徑,在項(xiàng)目的根目錄下-->
<!--以最后一個(gè)路徑為準(zhǔn),所以上面的絕對(duì)路徑下不會(huì)寫日志-->
<filevalue="./Log/AX.txt"></file>
<!--防止多線程時(shí)不能寫Log,官方說線程非安全-->
<!--實(shí)際使用時(shí),本地測(cè)試正常,部署后有不能寫日志的情況-->
<lockingModeltype="log4net.Appender.FileAppender+MinimalLock"/>
<appendToFilevalue="true"/>
<!--可以為:Once|Size|Date|Composite-->
<!--Composite為Size和Date的組合-->
<rollingStylevalue="composite"/>
<!--日志最大個(gè)數(shù),都是最新的-->
<!--rollingStyle節(jié)點(diǎn)為Date時(shí),該節(jié)點(diǎn)不起作用-->
<!--rollingStyle節(jié)點(diǎn)為Size時(shí),只能有value個(gè)日志-->
<!--rollingStyle節(jié)點(diǎn)為Composite時(shí),每天有value個(gè)日志-->
<maxSizeRollBackupsvalue="10"/>
<!--當(dāng)備份文件時(shí),為文件名加的后綴-->
<!--后綴為*.txt時(shí),例:AX.txt_2008-07-24.PxP應(yīng)該是程序上的一個(gè)bug-->
<!--后綴為*.TXT時(shí),例:AX.txt_2008-07-25.TXT-->
<datePatternvalue="_yyyy-MM-dd.TXT"/>
<!--可用的單位:KB|MB|GB-->
<!--不要使用小數(shù),否則會(huì)一直寫入當(dāng)前日志-->
<maximumFileSizevalue="1KB"/>
<!--置為true,當(dāng)前最新日志文件名永遠(yuǎn)為file節(jié)中的名字-->
<staticLogFileNamevalue="true"/>
<!--輸出級(jí)別在INFO和ERROR之間的日志-->
<filtertype="log4net.Filter.LevelRangeFilter">
<paramname="LevelMin"value="INFO"/>
<paramname="LevelMax"value="ERROR"/>
</filter>
<!--必須結(jié)合起來用,第一個(gè)只過濾出WARN,第二個(gè)拒絕其它其它日志輸出-->
<filtertype="log4net.Filter.LevelMatchFilter">
<paramname="LevelToMatch"value="WARN"/>
</filter>
<filtertype="log4net.Filter.DenyAllFilter"/>
<layouttype="log4net.Layout.PatternLayout">
<conversionPatternvalue="%date[%thread]%-5level%logger[%ndc]-%message%newline"/>
</layout>
</appender>
</log4net>
<!--==================================layout節(jié)點(diǎn)的配置說明==================================-->
<!--MadeByAX-->
<!--%m(message):輸出的日志消息,如ILog.Debug(…)輸出的一條消息-->
<!--%n(newline):換行-->
<!--%d(datetime):輸出當(dāng)前語句運(yùn)行的時(shí)刻-->
<!--%r(runtime):輸出程序從運(yùn)行到執(zhí)行到當(dāng)前語句時(shí)消耗的毫秒數(shù)-->
<!--%t(threadid):當(dāng)前語句所在的線程ID-->
<!--%p(priority):日志的當(dāng)前優(yōu)先級(jí)別,即DEBUG、INFO、WARN…等-->
<!--%c(class):當(dāng)前日志對(duì)象的名稱,例如:-->
<!--模式字符串為:%-10c-%m%n-->
<!--代碼為:-->
<!--ILoglog=LogManager.GetLogger(“Exam.Log”);-->
<!--log.Debug(“Hello”);-->
<!--則輸出為下面的形式:-->
<!--Exam.Log-Hello-->
<!--%L:輸出語句所在的行號(hào)-->
<!--%F:輸出語句所在的文件名-->
<!--%-數(shù)字:表示該項(xiàng)的最小長(zhǎng)度,如果不夠,則用空格填充-->
<!--例如,轉(zhuǎn)換模式為%r[%t]%-5p%c-%m%n的PatternLayout將生成類似于以下內(nèi)容的輸出:-->
<!--176[main]INFOorg.foo.Bar-Locatednearestgasstation.-->
<!---->
<!--========================================================================================-->
Ⅲ.在Default.aspx.cs的Page_Load里添加如下代碼.
protectedvoidPage_Load(objectsender,EventArgse)
{
//下面兩句應(yīng)該放在網(wǎng)站剛剛啟動(dòng)時(shí)加載,并放在一個(gè)靜態(tài)方法里方便調(diào)用
log4net.Config.XmlConfigurator.ConfigureAndWatch(newSystem.IO.FileInfo(Server.MapPath("Log4Net_AX.config")));
ILoglogAX=LogManager.GetLogger("loggerAX");
//寫日志
logAX.Error("ErrorAX");
logAX.Info("InfoAX");
}
F5,在項(xiàng)目目錄下找到Log文件夾的AX.txt ,這個(gè)就是剛剛生成的日志文件.
【寫日志的原則】
Ⅰ.在catch后,把異常寫入日志.
Ⅱ.在調(diào)用第三方控件的開始和結(jié)束處.
Ⅲ.在連接數(shù)據(jù)庫的開始結(jié)束處.
Ⅳ.除非必要,不要在循環(huán)體中加入日志,否則一旦出問題可能導(dǎo)致日志暴增.
Ⅴ.在自己認(rèn)為很重要的邏輯處寫入日志.
【注意】
發(fā)現(xiàn)有重要問題時(shí)最好用郵件日志,但不要指望上面的郵件配置節(jié)能發(fā)日志.
要使用能用的smtp服務(wù)器,163的只有部分用戶能
用.我的就不能用,很是郁悶.
要合理配置下列參數(shù).
Ⅰ.日志文件的大小
Ⅱ.備份的日志名樣式,最好時(shí)間精確到分---------------------------------------------------------------------------------------------------------------------------------------
|
因?yàn)楣ぷ髦杏幸玫絃og記錄,找到一篇不錯(cuò)的文章,就轉(zhuǎn)了過來。 一 Log4net簡(jiǎn)介 Log4net是基于.net開發(fā)的一款非常著名的記錄日志開源組件。他最早是2001年7月由NeoWorks Limited啟動(dòng)的項(xiàng)目,基本的框架源于另外的一個(gè)非常著名的姐妹組件-log4j。Log4net記錄日志的功能非常強(qiáng)大。它可以將日志分不同的等級(jí),比不同的樣式,將日志輸出到不同的媒介。 Log4net可以從 http://logging.apache.org/log4net/downloads.html 網(wǎng)站下載最新版本。 二 Log4net核心組成 Log4net主要由五個(gè)部分組成,分別為L(zhǎng)ogger,Appenders, Filters, Layouts 和Object Renders。 一)Logger(日志) 1. 記錄日志的分類: Log4net能夠以多種方式輸出日志。支持的日志輸出常用的主要媒介有數(shù)據(jù)庫(包括MS SQL Server, Access, Oracle9i,Oracle8i,DB2,SQLite,控制臺(tái),文件,事件日志(可以用事件查看器查看)和郵件等多種方式。 2. 日志的級(jí)別 Log4net支持多種級(jí)別的日志。優(yōu)先級(jí)從高到低依次排列如下: FATAL > ERROR > WARN > INFO > DEBUG 此外還有ALL(允許所有的日志請(qǐng)求)和OFF(拒絕所有的日志請(qǐng)求)這兩種特殊的級(jí)別。 二)Appenders Appenders決定日志輸出的方式。 Appenders必須實(shí)現(xiàn)log4net.Appenders.IAppender接口。 Log4net目前支持的輸出方式包括: 1 AdoNetAppender 將日志記錄到數(shù)據(jù)庫中??梢圆捎肧QL和存儲(chǔ)過程兩種方式。 2 AnsiColorTerminalAppender 在ANSI 窗口終端寫下高亮度的日志事件。 3 AspNetTraceAppender 能用asp.net中Trace的方式查看記錄的日志。 4 BufferingForwardingAppender 在輸出到子Appenders之前先緩存日志事件。 5 ConsoleAppender 將日志輸出到控制臺(tái)。 6 EventLogAppender 將日志寫到Windows Event Log. 7 FileAppender 將日志寫到文件中。 8 LocalSyslogAppender 將日志寫到local syslog service (僅用于UNIX環(huán)境下). 9 MemoryAppender 將日志存到內(nèi)存緩沖區(qū)。 10 NetSendAppender 將日志輸出到Windows Messenger service.這些日志信息將在用戶終端的對(duì)話框中顯示。 11 RemoteSyslogAppender 通過UDP網(wǎng)絡(luò)協(xié)議將日志寫到Remote syslog service。 12 RemotingAppender 通過.NET Remoting將日志寫到遠(yuǎn)程接收端。 13 RollingFileAppender 將日志以回滾文件的形式寫到文件中。 14 SmtpAppender 將日志寫到郵件中。 15 TraceAppender 將日志寫到.NET trace 系統(tǒng)。 16 UdpAppender 將日志connectionless UDP datagrams的形式送到遠(yuǎn)程宿主或以UdpClient的形式廣播。 三)Filters Appender對(duì)象將日志以缺省的方式傳到輸出流,然后Filter可以按照不同的標(biāo)準(zhǔn)控制日志的輸出。Filter可以再配置文件中配置。最簡(jiǎn)單的形式是在appender中寫明一個(gè)Threshold.這樣只有級(jí)別大于或等于此Threshold的日志才被記錄。 Filters必須實(shí)現(xiàn)log4net.Filters.IFilter接口。 四)Layouts Layouts控制日志顯示的格式樣式。日志的顯示格式如下: "%timestamp [%thread] %-5level %logger - %message%newline" Timestamp: 表示程序已經(jīng)開始執(zhí)行的時(shí)間。 單位[毫秒]。 Thread:執(zhí)行當(dāng)前代碼的線程。 Level:日志的級(jí)別。 Logger:日志相關(guān)請(qǐng)求的名稱。 Message: 日志消息。 Layouts還可以控制日志的輸出樣式,比如以普通形式或以xml等形式輸出。 五)Object Renderers 這是很重要的一項(xiàng),log4net將按照用戶定義的標(biāo)準(zhǔn)輸出日志消息。 Object Renders必須實(shí)現(xiàn)log4net.ObjectRenderer.IObjectRenerer接口。 三 如何在項(xiàng)目中使用log4net 下面有個(gè)基于控制臺(tái)的demo,舉例描述了log4net怎么用于輸出日志。 本例中,日志將會(huì)記錄到文件,控制臺(tái),事件日至和Access數(shù)據(jù)庫中。 一)主要代碼: 1. 配置文件app.config 1<?xml version="1.0" encoding="utf-8" ?> 2<configuration> 3 <!-- Register a section handler for the log4net section --> 4 <configSections> 5 <section name="log4net" type="System.Configuration.IgnoreSectionHandler" /> 6 </configSections> 7 <appSettings> 8 <!-- To enable internal log4net logging specify the following appSettings key --> 9 <!-- <add key="log4net.Internal.Debug" value="true"/> --></appSettings> 10 <!-- This section contains the log4net configuration settings --> 11 <log4net> 12 <!--定義輸出到文件中--> 13 <appender name="LogFileAppender" type="log4net.Appender.FileAppender"> 14 <!--定義文件存放位置--> 15 <file value="D:/log-file1.txt" /> 16 <!-- Example using environment variables in params --> 17 <!-- <file value="${TMP}/log-file.txt" /> --> 18 <!--<sppendToFile value="true" />--> 19 <!-- An alternate output encoding can be specified --> 20 <!-- <encoding value="unicodeFFFE" /> --> 21 <layout type="log4net.Layout.PatternLayout"> 22 <!--每條日志末尾的文字說明--> 23 <footer value="[Footer]--Test By Ring1981 " /> 24 <!--輸出格式--> 25 <conversionPattern value="%date [%thread] %-5level %logger [%ndc] <%property{auth}> - %message%newline" /> 26 </layout> 27 </appender> 28 <!--定義輸出到控制臺(tái)命令行中--> 29 <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"> 30 <layout type="log4net.Layout.PatternLayout"> 31 <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> 32 </layout> 33 </appender> 34 <!--定義輸出到windows事件中--> 35 <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender"> 36 <layout type="log4net.Layout.PatternLayout"> 37 <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> 38 </layout> 39 </appender> 40 <!--定義輸出到數(shù)據(jù)庫中,這里舉例輸出到Access數(shù)據(jù)庫中,數(shù)據(jù)庫為D盤的access.mdb--> 41 <appender name="AdoNetAppender_Access" type="log4net.Appender.AdoNetAppender"> 42 <connectionString value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:/access.mdb" /> 43 <commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message]) VALUES (@log_date, @thread, @log_level, @logger, @message)" /> 44 <!--定義各個(gè)參數(shù)--> 45 <parameter> 46 <parameterName value="@log_date" /> 47 <dbType value="String" /> 48 <size value="255" /> 49 <layout type="log4net.Layout.PatternLayout"> 50 <conversionPattern value="%date" /> 51 </layout> 52 </parameter> 53 <parameter> 54 <parameterName value="@thread" /> 55 <dbType value="String" /> 56 <size value="255" /> 57 <layout type="log4net.Layout.PatternLayout"> 58 <conversionPattern value="%thread" /> 59 </layout> 60 </parameter> 61 <parameter> 62 <parameterName value="@log_level" /> 63 <dbType value="String" /> 64 <size value="50" /> 65 <layout type="log4net.Layout.PatternLayout"> 66 <conversionPattern value="%level" /> 67 </layout> 68 </parameter> 69 <parameter> 70 <parameterName value="@logger" /> 71 <dbType value="String" /> 72 <size value="255" /> 73 <layout type="log4net.Layout.PatternLayout"> 74 <conversionPattern value="%logger" /> 75 </layout> 76 </parameter> 77 <parameter> 78 <parameterName value="@message" /> 79 <dbType value="String" /> 80 <size value="1024" /> 81 <layout type="log4net.Layout.PatternLayout"> 82 <conversionPattern value="%message" /> 83 </layout> 84 </parameter> 85 </appender> 86 <!--定義日志的輸出媒介,下面定義日志以四種方式輸出。也可以下面的按照一種類型或其他類型輸出。--> 87 <root> 88 <appender-ref ref="LogFileAppender" /> 89 <appender-ref ref="ConsoleAppender" /> 90 <appender-ref ref="EventLogAppender" /> 91 <appender-ref ref="AdoNetAppender_Access" /> 92 </root> 93 </log4net> 94</configuration> 2. LoggingExample.cs 1// Configure log4net using the .config file 2[assembly: log4net.Config.XmlConfigurator(Watch=true)] 3// This will cause log4net to look for a configuration file 4// called ConsoleApp.exe.config in the application base 5// directory (i.e. the directory containing ConsoleApp.exe) 6 7namespace ConsoleApp 8{ 9 using System; 10 11 /**//// <summary> 12 /// Example of how to simply configure and use log4net 13 /// </summary> 14 public class LoggingExample 15 { 16 private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); 17 18 public static void Main(string[] args) 19 { 20 log.Error("Error Acc"); 21 log.Fatal("Fatle Acc"); 22 System.Console.ReadLine(); 23 24 } 25 26 } 27} 28 運(yùn)行程序,日志就會(huì)以xml中定義的四種媒介形式輸出。
場(chǎng)景:我想用log4net輸出兩個(gè)log文件,一個(gè)文件輸出所有的log,例如debug,info,warn,error,fatal全部輸出, 另外一個(gè)log文件只輸出error級(jí)別的log。 困擾了一段時(shí)間,開始還以為沒有這樣的功能,仔細(xì)看log4.net的文檔發(fā)現(xiàn)是可以的。 其他地方省略了,重點(diǎn)看紅色標(biāo)出部分。這樣的話同一個(gè)地方寫入LOG,就會(huì)根據(jù)不同的級(jí)別輸出到不同的文件中。 下面是配置文件
|
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元

