如何使用 Log4Net 实用程序使用 C# 登录数据库
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/15516578/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to use Log4Net utility for logging into database using c#
提问by Rohit Vyas
Currently in my project log4net is used to log all the exception, information, warnings etc. to a text file, but now what I want is to log all these details into database table instead of file.
Please help me to do this.
目前在我的项目中,log4net 用于将所有异常、信息、警告等记录到文本文件中,但现在我想要的是将所有这些详细信息记录到数据库表而不是文件中。
请帮我做这件事。
Many thanks in advance.
提前谢谢了。
Configuration:
配置:
<log4net>
<root>
<level value="DEBUG" />
<appender-ref ref="ADONetAppender" />
</root>
<appender name="ADONetAppender" type="log4net.Appender.ADONetAppender">
<bufferSize value="100" />
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<connectionString value="server=xxxx; uid=xxxx; pwd=xxxx; database=xxxx" />
<commandText value="INSERT INTO log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
<parameter>
<parameterName value="@log_date"/>
<dbType value="DateTime"/>
<layout type="log4net.Layout.RawTimeStampLayout"/>
</parameter>
<parameter>
<parameterName value="@thread"/>
<dbType value="String"/>
<size value="255"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%thread"/>
</layout>
</parameter>
<parameter>
<parameterName value="@log_level"/>
<dbType value="String"/>
<size value="50"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%level"/>
</layout>
</parameter>
<parameter>
<parameterName value="@logger"/>
<dbType value="String"/>
<size value="255"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%logger"/>
</layout>
</parameter>
<parameter>
<parameterName value="@message"/>
<dbType value="String"/>
<size value="4000"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message"/>
</layout>
</parameter>
<parameter>
<parameterName value="@exception"/>
<dbType value="String"/>
<size value="2000"/>
<layout type="log4net.Layout.ExceptionLayout"/>
</parameter>
</appender>
</log4net>
Code in .cs file:
.cs 文件中的代码:
private log4net.ILog log = log4net.LogManager.GetLogger(typeof(ImportGlobalIPVData));
log.Error("This is Error");
But nothing gets inserted into log table after using above code.
但是使用上面的代码后,日志表中没有插入任何内容。
回答by L-Four
You can have a look here, I think this is exactly what you need.
你可以看看这里,我认为这正是你所需要的。
Note that if you want to use log4net from a client application and write to a database, you might want to consider to put a service in between. In that case you can easily write your own log4net adapter that calls your LogService (fire and forget) that logs into your database (probably using MSMQ).
请注意,如果您想从客户端应用程序使用 log4net 并写入数据库,您可能需要考虑在两者之间放置一个服务。在这种情况下,您可以轻松编写自己的 log4net 适配器,该适配器调用登录到数据库(可能使用 MSMQ)的 LogService(即发即弃)。