黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

log4net使用詳細(xì)介紹

系統(tǒng) 2713 0


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>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 日志記錄組件[Log4net]詳細(xì)介紹  - yorkguo - 人生絢麗 知者不惑 <!--rollingStyle節(jié)點(diǎn)為Date時(shí),該節(jié)點(diǎn)不起作用-->

 日志記錄組件[Log4net]詳細(xì)介紹  - yorkguo - 人生絢麗 知者不惑 <!--rollingStyle節(jié)點(diǎn)為Size時(shí),只能有value個(gè)日志-->

 日志記錄組件[Log4net]詳細(xì)介紹  - yorkguo - 人生絢麗 知者不惑 <!--rollingStyle節(jié)點(diǎn)為Composite時(shí),每天有value個(gè)日志-->

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

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

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

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

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

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

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

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

 日志記錄組件[Log4net]詳細(xì)介紹  - yorkguo - 人生絢麗 知者不惑 <!--置為true,當(dāng)前最新日志文件名永遠(yuǎn)為file節(jié)中的名字-->

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 日志記錄組件[Log4net]詳細(xì)介紹  - yorkguo - 人生絢麗 知者不惑 <!--==================================layout節(jié)點(diǎn)的配置說明==================================-->

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 日志記錄組件[Log4net]詳細(xì)介紹  - yorkguo - 人生絢麗 知者不惑 //下面兩句應(yīng)該放在網(wǎng)站剛剛啟動(dòng)時(shí)加載,并放在一個(gè)靜態(tài)方法里方便調(diào)用

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

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

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

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

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

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

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

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] &lt;%property{auth}&gt; - %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í)別輸出到不同的文件中。

下面是配置文件

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

log4net使用詳細(xì)介紹


更多文章、技術(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ì)您有幫助就好】

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

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論