繁体   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