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

参见英文答案 > Storing Log4Net Messages in SQL Server2个
目前在我的项目中,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(fire and forget)(可能使用MSMQ).

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...