3 回答

TA貢獻(xiàn)2039條經(jīng)驗(yàn) 獲得超8個(gè)贊
我最近受命為即將到來的項(xiàng)目“原型化一些登錄”。我沒有任何日志記錄框架的經(jīng)驗(yàn)。我在Log4Net,NLog和Enterprise Library上研究,瀏覽了教程,制作了玩具應(yīng)用程序,等等。3-4周后回來,將它們放在一起進(jìn)行演示。希望其中一些對(duì)您有用。
我對(duì)我們的項(xiàng)目的建議是:
使用日志外觀(例如Common.Logging,SimpleLoggingFacade)來避免直接依賴。
如果最終將Enterprise Library用于其他功能,則也將其用于日志記錄。
如果最終使用的東西依賴Log4Net,請(qǐng)使用Log4Net。
如果以上都不是,請(qǐng)使用NLog。我更喜歡。
這是基于以下發(fā)現(xiàn)(觀點(diǎn)!):
所有這三個(gè)框架都有能力并且可以做一些復(fù)雜的事情。我們需要一個(gè)高質(zhì)量的解決方案,但坦率地說,不需要超高性能或60種類型的事件接收器。
所有這三個(gè)都有非常相似的基本概念。
每個(gè)都有自己的絕妙技巧,例如真正的高級(jí)路由,動(dòng)態(tài)日志文件名,文件截?cái)嗟取?/p>
所有3個(gè)文件都以自己的方式很好地記錄在案。
對(duì)于像我這樣的完整新手,他們一開始有點(diǎn)尷尬。這里的基礎(chǔ)知識(shí)沒有太大的差異。我克服了
幾周后重新訪問時(shí),NLog 顯然是最容易恢復(fù)的。我只需要很少的化妝。使用Log4Net,我不得不重新回顧一些在線示例才能開始。有了EntLib,我放棄了,并從頭開始重新制作了這些教程-我完全迷失了。
我不知道如何讓EntLib做一些事情,例如登錄數(shù)據(jù)庫(kù)。這可能很容易,但是超出了我的時(shí)間限制。
Log4Net和NLog的代碼占用量很小。EntLib垃圾郵件,但無論如何我都會(huì)在其上使用外墻。
我不小心配置了EntLib,它在運(yùn)行時(shí)告訴我。Log4Net沒有。我沒有使用NLog意外配置錯(cuò)誤。
EntLib帶有一個(gè)漂亮的app.config編輯器,您100%需要它。NLog具有配置文件架構(gòu),因此您會(huì)得到“ intellisense”。Log4Net隨附nada。
顯然,到目前為止,我喜歡NLog。盡管有其他解決方案,但仍不足以使用它。

TA貢獻(xiàn)1801條經(jīng)驗(yàn) 獲得超16個(gè)贊
尚未討論的關(guān)鍵考慮因素是支持和更新。
自2006年4月19日發(fā)布1.2.10版以來,Log4Net尚未更新。
相比之下,自2006年以來就一直積極支持NLog,它將很快發(fā)布NLog 2.0,以支持上次更新log4net時(shí)不存在的許多平臺(tái),例如:
NET Framework 2.0 SP1及更高版本,3.5和4.0(客戶端和擴(kuò)展配置文件)
Silverlight 2.0、3.0、4.0
.NET Compact Framework 2.0、3.5
Mono 2.x配置文件

TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超13個(gè)贊
最近在這兩個(gè)框架上都有經(jīng)驗(yàn),我認(rèn)為我可以就每個(gè)框架分享自己的觀點(diǎn)。
我被要求評(píng)估現(xiàn)有Web應(yīng)用程序的日志記錄框架,在經(jīng)歷各種在線論壇后,我將選擇范圍縮小到NLog(v2.0)和log4net(v1.2.11)。這是我的發(fā)現(xiàn):
使用NLog進(jìn)行設(shè)置/啟動(dòng)非常簡(jiǎn)單。您在他們的網(wǎng)站上瀏覽了“入門指南”,然后就完成了。您有一個(gè)不錯(cuò)的主意,nlog會(huì)是什么樣子。配置文件非常直觀,任何人都可以理解配置。例如:如果要設(shè)置內(nèi)部登錄,請(qǐng)?jiān)贜log配置文件的頭節(jié)點(diǎn)中設(shè)置該標(biāo)志,這是您期望的位置。在log4net中,您可以在web.config的appSettings部分中設(shè)置不同的標(biāo)志。
在log4net中,內(nèi)部日志記錄不會(huì)輸出令人討厭的時(shí)間戳。在Nlog中,您會(huì)獲得帶有時(shí)間戳的漂亮日志。我發(fā)現(xiàn)它對(duì)我的評(píng)估非常有用。
log4net中的過濾器-您最好檢查一下我的問題-log4net過濾器-如何編寫AND過濾器以忽略日志消息,如果您找到答案或解決方案,請(qǐng)告訴我。我了解,此問題有解決方法,因?yàn)槟梢跃帉懽约旱淖远x過濾器。但是有些東西在log4net中不容易獲得。
性能-我使用存儲(chǔ)過程將大約3000條日志消息記錄到數(shù)據(jù)庫(kù)中。我使用了簡(jiǎn)單的for循環(huán)(int i = 0; i <3000; i ++ ...)記錄了3000條相同的消息。對(duì)于日志記錄:log4net AdoAppender花費(fèi)的時(shí)間幾乎是NLog的兩倍。
Log4net不支持異步附加程序。
選擇NLog作為日志記錄框架對(duì)我來說已經(jīng)足夠了。:)
添加回答
舉報(bào)