簡體   English   中英

使用ORM進行日志記錄(log4net和OpenAccess)

[英]Logging using ORM (log4net and OpenAccess)

根據以前的經驗和研究,我使用log4Net在工作場所實現了日志記錄。

但是,在我們的開發會議上介紹log4net時,通常傾向於使用自定義記錄器。 原因是為了使用從Telerik的ORM生成的代碼,而不是在配置文件中指定插入查詢。

<appender name="ADONetAppender" type="log4net.Appender.AdoNetAppender">
   <bufferSize value="1"/>
   <connectionType value="MySql.Data.MySqlClient.MySqlConnection, MySql.Data" />
   <connectionStringName value="Test"/>
   <commandText value="INSERT INTO Log (UniqueId,Date,UserId,Thread,level,Logger,Message,Exception)     VALUES (UUID(),?log_date,?userid,?thread,?log_level,?logger,?message,?exception)" />
   ...

你有什么建議? 我們可以為此創建自定義追加程序嗎? 我們應該去定制記錄器嗎?

有關信息,請參見此處對自定義記錄器的正面和負面看法。

謝謝

您可以創建一個自定義記錄器,它可以使用您喜歡的任何機制來記錄內容。 我個人發現AdoNetAppender的性能出色。

但是,在支持企業運營的過程中,我強烈建議您使用最低阻抗技術來記錄您的消息。 日志與調試生產系統結合在一起。 為了避免“數據庫訪問模式一致性”,我將避免編寫追加程序。

如果您遇到數據庫,ORM,操作系統或網絡問題,那么您需要做的最后一件事是使記錄器不工作。 我首先建議使用文件,Windows調試消息和ETW日志記錄,並且可以使用DB日志記錄來備份它,並且為了使其更加安全,我將db日志記錄至少放入了另一個不同的db中-以免影響您的生產系統。 最好是在本地服務器上,其中網絡連接不會起作用。

編輯

如果確實需要,可以從AdoNetAppender派生一個類,然后重寫CommandText屬性以進行自定義。 這里有一個我似乎無法放置的示例,該示例使用connectionstring進行此操作。

暫無
暫無

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

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