簡體   English   中英

C#創建日志系統

[英]C# Creating a log system

我正在閱讀以下文章: http//odetocode.com/articles/294.aspx

這篇文章提出了很多關於日志的問題。 (我不知道我是否應該在分開的問題中做出這個...但我不想垃圾堆棧stackoverflow.com與我的問題)

第一個是我應該將它存儲在.txt或.xml文件中......甚至存儲在數據庫中的表中。 可能在.txt中保存性能會更好。 但是當有人需要找到.txt文件的內容時,它可能會成為......頸部的痛苦。 那么......我應該使用哪一個,為什么?

第二個,是否有任何特定的類來處理“日志”的事情? 我已經閱讀了關於這個主題的幾個主題,但我沒有找到我的問題的答案。

提前致謝。

我過去采用的最簡單的方法是使用log4net。 這樣您就可以在配置文件中配置日志記錄。 如果您需要它去數據庫,請將其設置為這樣。 如果您希望在發生重大錯誤時收到通知,請將其設置為該方式。

對於日志的排序,它實際上取決於您想要采取的方法,以及您計划記錄的程度。 通常我登錄到平面文本文件,因為我沒有在我的應用程序中啟用大量日志記錄。 因此解析它們並不是什么大問題。

除非你想為教育目的編寫一個系統,否則我真的認為你最好堅持使用log4netnlog

而且,你可能會更好地研究這些系統的代碼,而不是編寫自己的代碼。

至於你的問題,我會堅持使用文本文件並在將消息吐出到磁盤之前緩沖消息。

為什么要發明輪子呢? 您可以查看MS企業庫日志記錄塊。

絕對不是xml。

使用xml,您需要全部讀取,解析它,添加任何內容,然后再次生成整個xml,並將其寫回硬盤。 每次你記錄一些東西。

除非你手動將節點附加到xml文件,否則你將失去大部分xml優勢。

對致命錯誤的警告 - 無論什么都可以幫助你調試應用程序崩潰 - 我將存儲在txt文件中的那些日志。 為每個條目添加一個新行。

這樣你也可以要求用戶查看(如果你通過電話協助他)。

如果它不是元日志,如上所述,換句話說,如果它與程序本身有任何關系,你可能需要分析 - 保持數據庫。

關於文件與數據庫,由您自行決定。

文件日志提供更高的性能,但訪問困難。

如果日志只是很少提供信息(例如應用程序崩潰,你需要知道原因),最好將日志存儲在文件中。

如果要授予對這些日志的訪問權限,分析它們等,則應將它們存儲在數據庫中。

.net實際上不是我的區域,但是有很多理由說明為什么要使用框架的日志類。

對於我的應用程序,我選擇寫入db。 以這種方式讀取日志更容易(對我而言)。 但是我不會像有些人那樣瘋狂地記錄日志,我只記錄我需要記錄的內容而沒有別的。

我不久前給了log4net一個鏡頭,根本不喜歡它。 只是寫入數據庫並發送電子郵件,這是一大堆垃圾。 我最后編寫了一個自定義日志記錄類,它整整約200行,只花了幾個小時。 它工作得很好,我沒有其他的依賴,它可以很容易地改變。

如果您正在處理ASP.NET, ELMAH是另一個很好的日志記錄工具。 這顯然是微軟的Scott Hanselman所使用的

需要一些額外的代碼才能使它與ASP.NET MVC的HandleError屬性一起使用。

NLog和log4net都提供了豐富的日志記錄API,但都沒有解決您在管理和分析日志文件中的所有數據時所面臨的挑戰。

如果您願意考慮使用商業工具,請查看GIBRLATAR - 它適用於NLoglog4net,並且還可以收集有用的性能指標 最重要的是, GIBRALTAR提供了用於管理和分析日志的出色工具

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM