導航:首頁 > 版本升級 > 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每小時一個文件相關的資料

熱點內容
窩窩app怎麼樣自動關 瀏覽:228
蘋果電腦怎麼用wps生成多個文件夾 瀏覽:309
蘋果手機哪裡有賣 瀏覽:83
app登錄狀態為什麼不過期 瀏覽:160
win10創意者無法升級 瀏覽:59
如何查殺後門程序 瀏覽:498
定類數據可以用哪些描述統計方法 瀏覽:278
微信公眾號閱讀全文怎麼跳轉文件 瀏覽:935
迷你編程怎麼免費進入 瀏覽:354
蘋果應用設置密碼 瀏覽:21
windowsmac共享文件夾 瀏覽:274
數據安全性和固態硬碟哪個好 瀏覽:433
word為什麼圖片不能旋轉 瀏覽:732
qq上本機文件怎麼刪除不了怎麼辦 瀏覽:117
美食的視頻app有哪些 瀏覽:251
買酒去什麼網站 瀏覽:140
jsdivcss 瀏覽:103
js有序數字 瀏覽:694
ps可以置入什麼文件 瀏覽:794
阿里巴巴集團您正在重置密碼 瀏覽:248

友情鏈接