使用log4net登录数据库

本文关键字:数据库 登录 log4net 使用 | 更新日期: 2023-09-27 18:27:55

我使用log4net记录项目中的错误。我想将消息记录到DB(SQL Server)中,所以我添加了AdoNetAppender,但它不起作用(其他附加程序工作正常,连接字符串正确)。可能出了什么问题?

使用log4net登录数据库

我决定创建一个简单的示例项目。这是有效的。也许你应该试着让它发挥作用。

创建一个空的控制台应用程序项目。添加对log4net的引用。C#代码:

using log4net;
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
namespace Litter
{
    class Program
    {
        static void Main()
        {
            LogManager.GetLogger("default").Info("Hello, World!");
        }
    }
}

配置文件:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  </configSections>
  <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
  <log4net>
    <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
      <bufferSize value="1"/>
      <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
      <connectionString value="data source=localhost'sqlexpress;initial catalog=Litter;integrated security=True;"/>
      <commandText value="INSERT INTO Logs ([Message]) VALUES (@message)"/>
      <parameter>
        <parameterName value="@message"/>
        <dbType value="String"/>
        <size value="2000"/>
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%message"/>
        </layout>
      </parameter>
    </appender>
    <root>
      <level value="DEBUG"/>
      <appender-ref ref="AdoNetAppender"/>
    </root>
  </log4net>
</configuration>

数据库表:

CREATE TABLE [dbo].[Logs]([Message] [nvarchar](2000) NOT NULL)
GO

这很简单。如果你能做到这一点,那么我会开始密切关注你的应用程序的AdoNetAppender配置。

谢谢大家。问题出在数据库中。我只需要将RowGuid属性设置为true。