導航:首頁 > 版本升級 > log4net每小時一個文件

log4net每小時一個文件

發布時間:2024-05-24 15:26:51

1. 濡備綍璺熻釜娑堟伅鍜宭og4net鏃ュ織

絎涓姝ワ紝
褰撶劧鏄娣誨姞log4net.dll鐨勫紩鐢ㄥ暒錛屾垜榪欓噷鎻愪緵涓涓猯og4net鐨刣ll鏂囦歡
絎浜屾ワ紝

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Web.config", Watch = true)]

榪欏彞璇濈殑鎰忔濇槸log4net浼氳嚜鍔ㄥ繪壘閰嶇疆鏂囦歡App.config鎴朩eb.config浠庤岃幏寰楀苟鍔犺澆鍏朵腑鐨勯厤緗淇℃伅銆傚傛灉鎯砽og4net闅忔椂鐩戣嗛厤緗鏂囦歡浠ヤ究閲嶆柊鍔犺澆鐨勮瘽灝辮佽繖鏍峰啓鎸夌収涓婇潰涓鏍峰啓錛坵inform紼嬪簭ConfigFile涓篈pp.config錛夈
絎涓夋ワ紝
閰嶇疆Web.config銆
+ View Code
涓婇潰榪欐甸厤緗鍙栬嚜鍛ㄥ叕錛岄厤緗鐨勮存槑涓婇潰宸茬粡娉ㄩ噴鐨勬瘮杈冭︾粏浜嗐
絎鍥涙ワ紝
鍦ㄧ▼搴忎腑璁板綍淇℃伅銆傛垜浠鍦ㄩ」鐩涓婦efault.aspx鐨凱age_Load鏂規硶鍔犲叆濡備笅浠g爜錛

//鑾峰緱log4net瀹炰緥

ILog log = log4net.LogManager.GetLogger("LogFileAppender");
log.Info("Default.aspx涓嬮潰鐨凱ageLoad鏂規硶琚鎵ц");

鐒跺悗榪愯岄」鐩錛屽彲浠ュ彂鐜板湪c:\log4netfile.txt涓宸茬粡璁板綍浜嗕竴鏉℃棩蹇椾俊鎮錛

1璁板綍鏃墮棿錛2011-04-21 21:26:17,729 綰跨▼ID:[4] 鏃ュ織綰у埆錛欼NFO 鍑洪敊綾伙細LogFileAppender property:[(null)] - 閿欒鎻忚堪錛欴efault.aspx涓嬮潰鐨凱ageLoad鏂規硶琚鎵ц

閫氳繃涓婇潰榪欏嚑姝ユ垜鎯蟲偍宸茬粡鑳藉熶負紼嬪簭鍒涘緩涓浜涚畝鍗曟棩蹇楄板綍鍔熻兘浜嗐

2. log4net配置文件解析

<log net>

<root>

<level value= ALL />

<appender ref ref= rollingFile />

</root>

<appender name= rollingFile type= log net Appender RollingFileAppender log net >

<param name= File value= log txt />

<param name= AppendToFile value= false />

<param name= RollingStyle value= Date />

<param name= DatePattern value= yyyy MM dd />

<param name= StaticLogFileName value= true />

<layout type= log net Layout PatternLayout log net >

<param name= ConversionPattern value= %d [%t] % p %c %m%n />

<param name= Header value= header />

<param name= Footer value= footer />

</layout>

</appender>

<appender name= consoleApp type= log net Appender ConsoleAppender log net >

<layout type= log net Layout PatternLayout log net >

<param name= ConversionPattern value= %d [%t] % p %c %m%n />

</layout>

</appender>

<logger name= Log NetTest LogTest >

<level value= DEBUG />

<appender ref ref= rollingFile />

<appender ref ref= coloredConsoleApp />

<appender ref ref= SystemEvent />

</logger>

</log net>

log net配置節的XSD層次如下

<log net>

<root><level /><appender ref ref= /></root>

<appender name= type= Appender的完全限定類名 >

<param name= value= />

<layout type= log net Layout PatternLayout log net >

<param name= value= />

</layout>

</appender>

<logger>

<level value= />

<appender ref ref= />

</logger>

log net是log net配置節的根標記

root標記定義一個根級別的記錄者 log net的記錄者採用層級組織的 每一個LOGGER(ROOT也是一個LOGGER 只不過 他是祖先而已 別的方面 跟其他LOGGER一樣) 都可以定義Level

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

None

Fatal

ERROR

WARN

DEBUG

INFO

ALL

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

Logger還有一個配置就是appender ref了 ref是參照的意思 log net的架構非常有意思 可擴展性非常高非常值得借鑒 他分為四個要素:

logger

appender

layout

filter

logger是負責日誌的記錄者

appender提供記錄的介質

layout負責把記入的內容格式化

filter負責把內容進行篩選

可以說 整個過程就是一個日誌流水線 每個成員負責其中的一個環節

logger發出記錄信息 appender接到信息 根據內部的layout配置對記錄信息格式化 根據filter決定此信息是否被過濾掉 最後 將其序列化

因此 logger的appender ref就是定義說 LOGGER要找誰去將內容寫入磁碟 流或其他介質 因此 十分重要吧

既然是ref引用 那肯定要定義這個被引用的appender對象了呀

每個appender都代表了一個輸出介質

name屬性指定其名稱 type則是log net Appender命名空間的一個類的名稱 意思是 指定使用哪種介質

log net支持的appender類型有十幾種 最常用的有rollingFileAppender AdoNetAppender EventLogAppender FileAppender 分別把日誌記入文件 系統日誌和資料庫

除此之外 appender內的其他參數都用param標記 以key/value形式定義於其內

這里有個小提示 每一個appender log net並沒有在文檔中提出他們需要哪些參數 那麼 我們怎麼知道呢?

原來 這些param的名稱 你可以直接查對應的appender類的屬性名即可 例如 使用EventLogAppender時 通過查看類的屬性 我們知道其有

LogName ApplicationName屬性 那麼 意味著 你可以直接在這個APPENDER的param里加入以下內容:

<param name= LogName value= Application />

<param name= ApplicationName value= log netTest />

定義了appender的NAME及TYPE屬性 以及使用param為其指定參數後 一個appender就建立了 你可以使用他的名字在LOGGER的<appender ref中去 引用它 那麼 引用它的LOGGER在寫入日誌時 就是寫到了APPENDER中定義的介質中去了

一個LOGGER可以引用多個APPENDER 其結果是 同一個日誌 被同時記錄到多個介質中去 便如 同時發郵件 寫入系統日誌 發送到遠程主機 不過 雖然可以這樣做 但是還是要小心 因為 會對性能有一定的影響 除非你需要 否則 不要亂用此功能

另外 appender中可以定義可選的layout

layout的定義非常有必要 如果你不想將來看到你的日誌會感覺頭暈的話 雖然log net幫你寫入日誌 但是 日誌信息的格式卻是我們使用者自行定義的layout的type參數指定使用哪個類的定義來格式化 常用的有XmlLayout SimpleLayout PatternLayout 這個當然要根據你的需要 以及你要產生的格式來選啦 如果你要輸出成XML文檔格式 你肯定不能用simplelayout吧

layout使用param以KEY/VALUE形式定義其參數

各個Layout類使用的參數當然不一樣啦 具體的 你可以去看各個Layout類的屬性

其中 PatternLayout可以使用ConversionPattern參數來指定一個格式化字元串

以及可以指定一個Header參數 做為日誌開頭的字元串 Footer來指定結尾字元串

這里有一個小技巧 日誌中開頭和結尾總想產生回車符吧 雖然logger在寫入一條日誌會自動回車 可是Header和FOOTER卻不會 咋辦?用 嗎?(我從別人的BLOG上看到過)經實踐 會原樣定改日誌 根本不會轉換 其實 我們可以用XML實體呀 使用&# ;&# ;就可以在指定位置插入一個回車換行符了

最後 像log net的文檔中說的那樣 如果你不想你的日誌文件變得很大 使讀寫的性能下降的話 建議你還是分級管理日誌 把粒度變小點 也就是說 除了定義ROOT外 最後 對每一個模塊或每一個實體 依據用途 目的 定義各自的LOGGER配置 這樣的好處是日誌被分散了 日誌文件增長就沒那麼快了 每一個LOGGER的結構跟ROOT是一模一樣的 這里不再敘述了 像前面說的那樣 如果你相讓日誌產生層級關系 你可以跟他們的NAME屬性像C#中的namespace那樣命名就可以了

要說明的是 LOGGER的定義是非必須的 只是一種建議罷了 Log net的配置中 除了必須定義一個ROOT和一個APPENDER外 其他的都是可選的

lishixin/Article/program/net/201311/11448

3. C#中 怎麼使用 log4Net 日誌文件

log4net(Log For Net)是Apache開源的應用於.Net框架的日誌記錄工具,詳細信息參見Apache網站.它是針對Java的log4j(Log For Java的)姊妹工具.用過log4j的都知道,它功能強大,可配置性靈活,線程安全,對日誌的輸出管理和級別管理方便。

首先你應該下載log4net.dll並引入到你的項目References中,或者把源代碼項目作為你工程的一部分加入到你的工程當中。
使用log4net需要知道其中兩個比較重要的概念:logger 和 appender。前者是日誌記錄對象,後者是日誌記錄的目標,包括控制台,文件,定量大小的文件,遠程廣播。也就是說我們使用log4net的過程可以是這樣的:獲得一個用來記錄日誌的工具對象logger,然後為logger對象指定日誌的記錄位置.美妙的是,這一切工作都可以在Web.config配置文件中完成,所用的代碼極少.
其配置如下:
先在web.config中的節點下添加如下配置:

用過web.config自定義節點的朋友都知道,還應該配置log4net節點,接下來在節點下添加如下log4net節點配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35

從上面的配置中可以看到定義了多個appender,每一個appender就是一個日誌記錄的目標。root節點指定了選用哪一個 appender. 在這里我選用了LogFileAppender。
到這里配置就基本上完成了,但是怎麼使用上面的配置呢?log4net為我們提供了在應用程序啟動時載入配置信息的入口,很簡單,在Global.asax.cs的Application_Start過程中添加如下代碼:
log4net.Config.DOMConfigurator.Configure();
好了,到此為止整個配置過程完成了,下面是怎麼調用的問題了。
新建一個log4nettest.aspx頁面,在cs文件中添加引用 using log4net;定義本頁的一個全局變數:
private static readonly ILog log = LogManager.GetLogger(typeof(log4nettest));
然後在Page_Load中添加如下代碼:log.Debug("這是我在使用Log4Net");運行該頁面,在C:\下面會生成一個Applog.txt文本文件,打開看看,裡面就有你寫入的日誌。

閱讀全文

與log4net每小時一個文件相關的資料

熱點內容
簡述網路直接市場調查方式有哪些 瀏覽:683
怎麼連接移動網路設置 瀏覽:781
電腦網卡怎麼連接網路連接不上網嗎 瀏覽:838
刷子公司網站怎麼做 瀏覽:272
86版本艾爾文測試 瀏覽:714
深宮曲文件夾是哪個 瀏覽:618
蘋果u盤修復工具哪個好用 瀏覽:124
微信動態表情包搞笑 瀏覽:436
可以去哪裡找編程老師問問題 瀏覽:608
win10lol全屏 瀏覽:25
qq圖片動態動漫少女 瀏覽:122
sai繪圖教程視頻 瀏覽:519
如何分析載入減速法數據 瀏覽:672
手機怎麼免費轉換pdf文件格式 瀏覽:668
在哪個網站可以駕照年檢 瀏覽:89
iphone可以播放ape嗎 瀏覽:991
matlabp文件能破解嗎 瀏覽:817
四川省高三大數據考試是什麼 瀏覽:457
導出打開java文件 瀏覽:671
win10藍屏是硬碟壞了么 瀏覽:46

友情鏈接