C# 使用ORM(log4net和OpenAccess)记录日志
基于以前的经验和研究,我使用log4Net在工作场所实现了日志记录 然而,当log4net在我们的开发会议上出现时,人们普遍倾向于使用定制的记录器。原因是为了使用Telerik的ORM生成的代码,而不是在配置文件中指定insert查询C# 使用ORM(log4net和OpenAccess)记录日志,c#,logging,orm,log4net,openaccess,C#,Logging,Orm,Log4net,Openaccess,基于以前的经验和研究,我使用log4Net在工作场所实现了日志记录 然而,当log4net在我们的开发会议上出现时,人们普遍倾向于使用定制的记录器。原因是为了使用Telerik的ORM生成的代码,而不是在配置文件中指定insert查询 <appender name="ADONetAppender" type="log4net.Appender.AdoNetAppender"> <bufferSize value="1"/> <connectionType
<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的表现非常出色 然而,在支持企业运营之后,我强烈建议您使用最低阻抗技术来记录消息。日志在调试生产系统时会自动生成。为了“db访问模式一致性”,我会避免编写appender 如果您遇到数据库、ORM、操作系统或网络问题,那么您最不需要的就是让您的记录器无法工作。文件、Windows调试消息和ETW日志记录是我在第一个实例中推荐的,可以使用DB日志记录进行备份,为了更安全,我至少将DB日志记录放在另一个DB中,以免影响生产系统。最好是在本地服务器上,这样网络连接就不会发挥作用 编辑:
如果确实需要,可以从AdoNetAppender派生一个类,然后将CommandText属性重写为custom。这里有一个我似乎无法放置的示例,它是通过connectionstring实现的。当您说“任何机制”时,我可以使用AdoNetAppender而不在配置文件中指定insert查询吗?我希望了解Log4Net的功能/性能,并满足团队要求。谢谢你的建议。我会做一些研究并考虑一个不同的数据库。是的,我已经看到了可以重写连接字符串的例子。它是在log4net具有connectionStringName属性之前使用的。我曾考虑对commandtext使用相同的方法,但它仍然不会使用团队所需的数据传输对象。定制的记录器似乎是目前唯一的解决方案。