c# - 如何使用 Log4Net 实用程序使用 C# 登录数据库

标签 c# log4net log4net-configuration

<分区>

目前在我的项目中log4net用于将所有异常、信息、警告等记录到一个文本文件中,但现在我想要的是将所有这些详细信息记录到数据库表而不是文件中。
请帮我做这件事。

非常感谢。

配置:

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

.cs 文件中的代码:

private log4net.ILog log = log4net.LogManager.GetLogger(typeof(ImportGlobalIPVData));
log.Error("This is Error");

但是在使用上面的代码后,没有任何东西被插入到日志表中。

最佳答案

可以看看here ,我认为这正是您所需要的。

请注意,如果您想从客户端应用程序使用 log4net 并写入数据库,您可能需要考虑在两者之间放置一个服务。在这种情况下,您可以轻松编写自己的 log4net 适配器,调用您的 LogService(即发即弃)登录到您的数据库(可能使用 MSMQ)。

关于c# - 如何使用 Log4Net 实用程序使用 C# 登录数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15516578/

相关文章:

.net - 使用其他 log4net 日志级别而不是通常级别

c# - 在什么情况下我需要 Entity Framework 中的外键和导航属性

c# - 增加一个 int++ 不会超过 1

log4net - 在解决方案中的多个程序集中使用相同的 Log4net 记录器的最佳模式是什么?

log4j - Log4Net 是面向消息的中间件吗?

c# - 将消息记录到不同的数据库

debugging - 当连接字符串不正确时,Log4Net XmlConfigurator.Configure() 会挂起。 Log4Net 中的错误?

c# - 如何将 Entity Framework 设置为使用可选外键级联删除?

c# - 无效的列名sql错误

asp.net-mvc - 为什么 log4net 不记录 nhibernate 信息