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

log4net使用詳細介紹

系統 2258 0


log4net按照不同的【LEVEL】級別輸出到不同文件

Log4Net五步走

Log4Net主頁: http://logging.apache.org/log4net/ ,下載Log4Net

Log4Net主要由Logger, Appender, Filter, Layout 4個組件構成, 一般情況下后3個組件在配置文件中配置.

1. LogNet工程引用log4net.dll

2.定義配置文件,可以配置在web.config,也可以單獨配置在xml文件里面

3.雙擊打開AssemblyInfo.cs在最后添加
[assembly: log4net.Config.XMLConfigurator(ConfigFile = “log4net.config”, Watch = true)]


3.創建或獲取日志對象
log4net.ILog log = log4net.LogManager.GetLogger(”logger-name”);
可以定義多個log對象,每個log對象分別取配置文件不同的<logger>標記,每個<logger>分別取不同的appender
這樣就可以用不同的log對象把日志輸出到不同的文件或者其它介質,

4.輸出日志信息
log.debug()

Log4net主要由五個部分組成,分別為Logger,Appenders, Filters, Layouts 和Object Renders。


一、Logger(日志)


1. 記錄日志的分類:

Log4net能夠以多種方式輸出日志。支持的日志輸出常用的主要媒介有數據庫(包括MS SQL Server, Access, Oracle9i,Oracle8i,DB2,SQLite,控制臺,文件,事件日志(可以用事件查看器查看)和郵件等多種方式。


2. 日志的級別

Log4net支持多種級別的日志。優先級從高到低依次排列如下:

FATAL > ERROR > WARN > INFO > DEBUG

此外還有ALL(允許所有的日志請求)和OFF(拒絕所有的日志請求)這兩種特殊的級別。


二、Appenders


Appenders決定日志輸出的方式。

Appenders必須實現log4net.Appenders.IAppender接口。


Log4net目前支持的輸出方式包括:
1、AdoNetAppender
將日志記錄到數據庫中。可以采用SQL和存儲過程兩種方式。

2、AnsiColorTerminalAppender
在ANSI 窗口終端寫下高亮度的日志事件。

3、AspNetTraceAppender
能用asp.net中Trace的方式查看記錄的日志。

4、BufferingForwardingAppender
在輸出到子Appenders之前先緩存日志事件。

5、ConsoleAppender
將日志輸出到控制臺。

6、EventLogAppender
將日志寫到Windows Event Log.

7、FileAppender
將日志寫到文件中。

8、LocalSyslogAppender
將日志寫到local syslog service (僅用于UNIX環境下).
9、MemoryAppender
將日志存到內存緩沖區。

10、NetSendAppender
將日志輸出到Windows Messenger service.這些日志信息將在用戶終端的對話框中顯示。

11、RemoteSyslogAppender
通過UDP網絡協議將日志寫到Remote syslog service。

12、RemotingAppender
通過.NET Remoting將日志寫到遠程接收端。

13、RollingFileAppender
將日志以回滾文件的形式寫到文件中。

14、SmtpAppender
將日志寫到郵件中。

15、TraceAppender
將日志寫到.NET trace 系統。

16、UdpAppender
將日志connectionless UDP datagrams的形式送到遠程宿主或以UdpClient的形式廣播。


三、Filters


Appender對象將日志以缺省的方式傳到輸出流,然后Filter可以按照不同的標準控制日志的輸出。Filter可以再配置文件中配置。最簡單的形式是在appender中寫明一個Threshold.這樣只有級別大于或等于此Threshold的日志才被記錄。

Filters必須實現log4net.Filters.IFilter接口。


四、Layouts


Layouts控制日志顯示的格式樣式。日志的顯示格式如下:

"%timestamp [%thread] %-5level %logger - %message%newline"

Timestamp: 表示程序已經開始執行的時間。 單位[毫秒]。

Thread:執行當前代碼的線程。

Level:日志的級別。

Logger:日志相關請求的名稱。

Message: 日志消息。


Layouts還可以控制日志的輸出樣式,比如以普通形式或以xml等形式輸出。


五、Object Renderers


這是很重要的一項,log4net將按照用戶定義的標準輸出日志消息。

Object Renders必須實現log4net.ObjectRenderer.IObjectRenerer接口


Logger

負責產生日志消息,可以在代碼中調用

Logger的Level屬性可以設以下值,由高到低為OFF,FATAL,
ERROR,WARN,INFO,DEBUG,ALL. 高于設定值方法都能寫入日志,
Off所有的寫入方法都不寫到日志里,ALL則相反。例如當我們設成Info時,logger.Debug就會被忽略而不寫入文件,但是FATAL,
ERROR,WARN,INFO會被寫入,因為他們等級高于INFO;


Appender

負責向存儲介質中追加日志, 一般在配置文件中配置,根據保存日志介質的不同Appender有多種,
比如:AdoNetAppender,EventLogAppender,RollingFileAppender等.參見:
http://logging.apache.org/log4net/release/config-examples.HTML .

Filter

負責過濾日志, 一般和Appender聯合使用,在配置文件中配置

Layout

負責日志消息的格式, 一般和Appender聯合使用,在配置文件中配置。

----------------------------------------------------------------------

log4net標簽的框架如下, 該標簽下有root, logger, appender等標簽

root標簽

所有的logger都從root繼承, root本身也是一個logger

logger標簽

每個logger標簽代表一個logger,appender-ref表示該logger產生的日志消息傳遞給哪個appender,一個logger可以把相同的消

息傳遞給多個appender記錄

appender標簽

每個appender表示一個日志的存儲位置,name不能和type一樣

設定參數

日志根據日期滾動

日志文件名格式為

日志文件名是否是固定不變的


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):輸出當前語句運行的時刻

%r(run time):輸出程序從運行到執行到當前語句時消耗的毫秒數

%t(thread id):當前語句所在的線程ID

%p(priority): 日志的當前優先級別,即DEBUG、INFO、WARN…等

%c(class):當前日志對象的名稱

%L:輸出語句所在的行號

%F:輸出語句所在的文件名

%-數字:表示該項的最小長度,如果不夠,則用空格填充

-------------------------------------------------------------------------------------------------------------------------------------

log4net>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <loggername="loggerAX">

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <!--controlloglevel:ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF-->

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <!--如果沒有定義LEVEL的值,則缺省為DEBUG-->

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <levelvalue="ALL"/>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <appender-refref="SmtpAppenderAX"></appender-ref>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <appender-refref="FileAppenderAX"></appender-ref>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 </logger>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <appendername="SmtpAppenderAX"type="log4net.Appender.SmtpAppender">

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <tovalue="AXzhz@163.com"></to>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <fromvalue="AXzhz@163.com"/>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <subjectvalue="AX'TestLogMessage"/>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <smtpHostvalue="smtp.163.com"/>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <usernamevalue="AXzhz"/>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <passwordvalue="110"/>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <bufferSizevalue="2048"/>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <!--超長部分是否丟棄-->

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <lossyvalue="false"/>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <!--evaluator時好時壞,靠不住,還是用filter實在-->

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <!--<evaluatortype="log4net.Core.LevelEvaluator">

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <thresholdvalue="ERROR"/>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 </evaluator>-->

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <!--<evaluatortype="log4net.Core.LevelEvaluator,log4net">

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <thresholdvalue="WARN"/>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 </evaluator>-->

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <!--將導致不能寫日志-->

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <!--<filtertype="log4net.Filter.DenyAllFilter"/>-->

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <!--輸出級別在WARN和OFF之間的日志-->

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <filtertype="log4net.Filter.LevelRangeFilter">

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <paramname="LevelMin"value="WARN"/>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <paramname="LevelMax"value="OFF"/>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 </filter>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <layouttype="log4net.Layout.PatternLayout">

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <conversionPatternvalue="%newline%date[%thread]%-5level%logger[%property{NDC}]:%newline%message%newline"/>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 </layout>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 </appender>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <appendername="FileAppenderAX"type="log4net.Appender.RollingFileAppender">

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <!--絕對路徑-->

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <filevalue="D://AX.txt"></file>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <!--相對路徑,在項目的根目錄下-->

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <!--以最后一個路徑為準,所以上面的絕對路徑下不會寫日志-->

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <filevalue="./Log/AX.txt"></file>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <!--防止多線程時不能寫Log,官方說線程非安全-->

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <!--實際使用時,本地測試正常,部署后有不能寫日志的情況-->

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <lockingModeltype="log4net.Appender.FileAppender+MinimalLock"/>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <appendToFilevalue="true"/>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <!--可以為:Once|Size|Date|Composite-->

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <!--Composite為Size和Date的組合-->

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <rollingStylevalue="composite"/>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <!--日志最大個數,都是最新的-->

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <!--rollingStyle節點為Date時,該節點不起作用-->

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <!--rollingStyle節點為Size時,只能有value個日志-->

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <!--rollingStyle節點為Composite時,每天有value個日志-->

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <maxSizeRollBackupsvalue="10"/>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <!--當備份文件時,為文件名加的后綴-->

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <!--后綴為*.txt時,例:AX.txt_2008-07-24.PxP應該是程序上的一個bug-->

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <!--后綴為*.TXT時,例:AX.txt_2008-07-25.TXT-->

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <datePatternvalue="_yyyy-MM-dd.TXT"/>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <!--可用的單位:KB|MB|GB-->

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <!--不要使用小數,否則會一直寫入當前日志-->

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <maximumFileSizevalue="1KB"/>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <!--置為true,當前最新日志文件名永遠為file節中的名字-->

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <staticLogFileNamevalue="true"/>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <!--輸出級別在INFO和ERROR之間的日志-->

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <filtertype="log4net.Filter.LevelRangeFilter">

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <paramname="LevelMin"value="INFO"/>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <paramname="LevelMax"value="ERROR"/>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 </filter>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <!--必須結合起來用,第一個只過濾出WARN,第二個拒絕其它其它日志輸出-->

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <filtertype="log4net.Filter.LevelMatchFilter">

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <paramname="LevelToMatch"value="WARN"/>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 </filter>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <filtertype="log4net.Filter.DenyAllFilter"/>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <layouttype="log4net.Layout.PatternLayout">

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <conversionPatternvalue="%date[%thread]%-5level%logger[%ndc]-%message%newline"/>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 </layout>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 </appender>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 </log4net>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <!--==================================layout節點的配置說明==================================-->

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <!--MadeByAX-->

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <!--%m(message):輸出的日志消息,如ILog.Debug(…)輸出的一條消息-->

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <!--%n(newline):換行-->

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <!--%d(datetime):輸出當前語句運行的時刻-->

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <!--%r(runtime):輸出程序從運行到執行到當前語句時消耗的毫秒數-->

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <!--%t(threadid):當前語句所在的線程ID-->

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <!--%p(priority):日志的當前優先級別,即DEBUG、INFO、WARN…等-->

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <!--%c(class):當前日志對象的名稱,例如:-->

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <!--模式字符串為:%-10c-%m%n-->

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <!--代碼為:-->

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <!--ILoglog=LogManager.GetLogger(“Exam.Log”);-->

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <!--log.Debug(“Hello”);-->

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <!--則輸出為下面的形式:-->

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <!--Exam.Log-Hello-->

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <!--%L:輸出語句所在的行號-->

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <!--%F:輸出語句所在的文件名-->

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <!--%-數字:表示該項的最小長度,如果不夠,則用空格填充-->

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <!--例如,轉換模式為%r[%t]%-5p%c-%m%n的PatternLayout將生成類似于以下內容的輸出:-->

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <!--176[main]INFOorg.foo.Bar-Locatednearestgasstation.-->

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <!---->

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <!--========================================================================================-->

Ⅲ.在Default.aspx.cs的Page_Load里添加如下代碼.

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 protectedvoidPage_Load(objectsender,EventArgse)

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑  日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑  日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 {

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 //下面兩句應該放在網站剛剛啟動時加載,并放在一個靜態方法里方便調用

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 log4net.Config.XmlConfigurator.ConfigureAndWatch(newSystem.IO.FileInfo(Server.MapPath("Log4Net_AX.config")));

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 ILoglogAX=LogManager.GetLogger("loggerAX");

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 //寫日志

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 logAX.Error("ErrorAX");

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 logAX.Info("InfoAX");

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 }

F5,在項目目錄下找到Log文件夾的AX.txt ,這個就是剛剛生成的日志文件.

【寫日志的原則】

Ⅰ.在catch后,把異常寫入日志.

Ⅱ.在調用第三方控件的開始和結束處.

Ⅲ.在連接數據庫的開始結束處.

Ⅳ.除非必要,不要在循環體中加入日志,否則一旦出問題可能導致日志暴增.

Ⅴ.在自己認為很重要的邏輯處寫入日志.

【注意】

發現有重要問題時最好用郵件日志,但不要指望上面的郵件配置節能發日志.

要使用能用的smtp服務器,163的只有部分用戶能

用.我的就不能用,很是郁悶.

要合理配置下列參數.

Ⅰ.日志文件的大小

Ⅱ.備份的日志名樣式,最好時間精確到分---------------------------------------------------------------------------------------------------------------------------------------

因為工作中有要用到Log記錄,找到一篇不錯的文章,就轉了過來。

一 Log4net簡介

Log4net是基于.net開發的一款非常著名的記錄日志開源組件。他最早是2001年7月由NeoWorks Limited啟動的項目,基本的框架源于另外的一個非常著名的姐妹組件-log4j。Log4net記錄日志的功能非常強大。它可以將日志分不同的等級,比不同的樣式,將日志輸出到不同的媒介。

Log4net可以從 http://logging.apache.org/log4net/downloads.html 網站下載最新版本。

二 Log4net核心組成

Log4net主要由五個部分組成,分別為Logger,Appenders, Filters, Layouts 和Object Renders。

一)Logger(日志)

1. 記錄日志的分類:

Log4net能夠以多種方式輸出日志。支持的日志輸出常用的主要媒介有數據庫(包括MS SQL Server, Access, Oracle9i,Oracle8i,DB2,SQLite,控制臺,文件,事件日志(可以用事件查看器查看)和郵件等多種方式。

2. 日志的級別

Log4net支持多種級別的日志。優先級從高到低依次排列如下:

FATAL > ERROR > WARN > INFO > DEBUG

此外還有ALL(允許所有的日志請求)和OFF(拒絕所有的日志請求)這兩種特殊的級別。

二)Appenders

Appenders決定日志輸出的方式。

Appenders必須實現log4net.Appenders.IAppender接口。

Log4net目前支持的輸出方式包括:

1 AdoNetAppender

將日志記錄到數據庫中。可以采用SQL和存儲過程兩種方式。

2 AnsiColorTerminalAppender

在ANSI 窗口終端寫下高亮度的日志事件。

3 AspNetTraceAppender

能用asp.net中Trace的方式查看記錄的日志。

4 BufferingForwardingAppender

在輸出到子Appenders之前先緩存日志事件。

5 ConsoleAppender

將日志輸出到控制臺。

6 EventLogAppender

將日志寫到Windows Event Log.

7 FileAppender

將日志寫到文件中。

8 LocalSyslogAppender

將日志寫到local syslog service (僅用于UNIX環境下).

9 MemoryAppender

將日志存到內存緩沖區。

10 NetSendAppender

將日志輸出到Windows Messenger service.這些日志信息將在用戶終端的對話框中顯示。

11 RemoteSyslogAppender

通過UDP網絡協議將日志寫到Remote syslog service。

12 RemotingAppender

通過.NET Remoting將日志寫到遠程接收端。

13 RollingFileAppender

將日志以回滾文件的形式寫到文件中。

14 SmtpAppender

將日志寫到郵件中。

15 TraceAppender

將日志寫到.NET trace 系統。

16 UdpAppender

將日志connectionless UDP datagrams的形式送到遠程宿主或以UdpClient的形式廣播。

三)Filters

Appender對象將日志以缺省的方式傳到輸出流,然后Filter可以按照不同的標準控制日志的輸出。Filter可以再配置文件中配置。最簡單的形式是在appender中寫明一個Threshold.這樣只有級別大于或等于此Threshold的日志才被記錄。

Filters必須實現log4net.Filters.IFilter接口。

四)Layouts

Layouts控制日志顯示的格式樣式。日志的顯示格式如下:

"%timestamp [%thread] %-5level %logger - %message%newline"

Timestamp: 表示程序已經開始執行的時間。 單位[毫秒]。

Thread:執行當前代碼的線程。

Level:日志的級別。

Logger:日志相關請求的名稱。

Message: 日志消息。

Layouts還可以控制日志的輸出樣式,比如以普通形式或以xml等形式輸出。

五)Object Renderers

這是很重要的一項,log4net將按照用戶定義的標準輸出日志消息。

Object Renders必須實現log4net.ObjectRenderer.IObjectRenerer接口。

三 如何在項目中使用log4net

下面有個基于控制臺的demo,舉例描述了log4net怎么用于輸出日志。

本例中,日志將會記錄到文件,控制臺,事件日至和Access數據庫中。

一)主要代碼:

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] &lt;%property{auth}&gt; - %message%newline" />

26 </layout>

27 </appender>

28 <!--定義輸出到控制臺命令行中-->

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 <!--定義輸出到數據庫中,這里舉例輸出到Access數據庫中,數據庫為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 <!--定義各個參數-->

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

運行程序,日志就會以xml中定義的四種媒介形式輸出。

場景:我想用log4net輸出兩個log文件,一個文件輸出所有的log,例如debug,info,warn,error,fatal全部輸出,

另外一個log文件只輸出error級別的log。

困擾了一段時間,開始還以為沒有這樣的功能,仔細看log4.net的文檔發現是可以的。

其他地方省略了,重點看紅色標出部分。這樣的話同一個地方寫入LOG,就會根據不同的級別輸出到不同的文件中。

下面是配置文件

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <log4net>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <root>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <levelvalue="DEBUG"/>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <appender-refref="RollingFileAppender"/>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <appender-refref="ErrorRollingFileAppender"/>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 </root>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <appendername="RollingFileAppender"type="log4net.Appender.RollingFileAppender">

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <filevalue="c:/log.txt"/>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <appendToFilevalue="true"/>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <rollingStylevalue="Size"/>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <maxSizeRollBackupsvalue="10"/>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <maximumFileSizevalue="100KB"/>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <staticLogFileNamevalue="true"/>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <layouttype="log4net.Layout.PatternLayout">

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <conversionPatternvalue="%date[%thread]%-5level[%rmsused]-%message%newline"/>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 </layout>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 </appender>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <appendername="ErrorRollingFileAppender"type="log4net.Appender.RollingFileAppender"LEVEL="ERROR">

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <filevalue="c:/errorlog.txt"/>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <appendToFilevalue="true"/>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <rollingStylevalue="Size"/>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <maxSizeRollBackupsvalue="10"/>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <maximumFileSizevalue="1024KB"/>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <staticLogFileNamevalue="true"/>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <layouttype="log4net.Layout.PatternLayout">

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <conversionPatternvalue="%date[%thread]%-5level[%logger][%property{NDC}]-%message%newline"/>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 </layout>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <filtertype="log4net.Filter.LevelRangeFilter">

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <paramname="LevelMin"value="ERROR"/>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 <paramname="LevelMax"value="ERROR"/>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 </filter>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 </appender>

 日志記錄組件[Log4net]詳細介紹  - yorkguo - 人生絢麗 知者不惑 </log4net>

log4net使用詳細介紹


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

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

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

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 精品欧美在线精品 | 日韩视频在线精品视频免费观看 | 亚洲美女精品 | 成人免费影院 | 91短视频在线高清hd | 国产成人精品午夜 | 一级毛片不卡片免费观看 | 日日摸夜夜摸人人嗷嗷叫 | 国产精品久久久久影院色老大 | 亚洲精品国偷拍自产在线观看 | 好大好硬好长好爽a网站 | 国产精品久久久久久久久久 | 久久久久99| 欧美日韩亚洲区久久综合 | 一个色综合网站 | 欧美a站 | 国产婷婷色一区二区三区在线 | 黑人一区 | 国产亚洲欧美日本一二三本道 | 少妇特黄A片一区二区三区免费看 | 色综合综合在线 | 丁香综合五月 | 亚洲欧美日韩综合一区久久 | 99人中文字幕亚洲区 | 色婷婷五 | 国产真人做爰视频免费 | 国产精品视频免费观看 | 欧美日韩亚洲视频 | 国产下药迷倒白嫩美女96 | 日韩欧美在线视频播放 | 久久国产日韩 | 扒开双腿进入做爰视频 | 久久亚洲欧美日韩精品专区 | 色中色资源| 久在线视频 | 亚洲 日本 欧美 日韩精品 | 唐人社电亚洲一区二区三区 | 欧美日韩视频 | 欧美亚洲香蕉 | 亚洲成人精品 | 手机在线看片国产日韩生活片 |