【问题标题】:Log4net to database not workingLog4net 到数据库不起作用
【发布时间】:2012-11-30 00:20:57
【问题描述】:

我在通过 log4net 登录数据库时遇到问题。

  • 用户有权插入数据库
  • 同样的插入语句在 Management Studio 中有效
  • log4net 确实记录到文件但不记录到数据库
  • 连接字符串正确(在其他应用程序中相同)

得到以下配置:

<log4net debug="true">
    <appender name="FileAppender" type="log4net.Appender.FileAppender">
        <file type="log4net.Util.PatternString" value="Logs\JallaJalla (%date{yyyyMMdd HHmmss}).log" />
        <appendToFile value="true" />
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date %logger %-5level - %message%newline" />
        </layout>
    </appender>

    <appender name="ADONetAppender" type="log4net.Appender.AdoNetAppender">
        <threshold value="DEBUG"/>
        <bufferSize value="1" />
        <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <connectionString value="Data Source=xxx;Initial Catalog=xxx;User Id=xxx;Password=xxx;" />
        <commandText value="INSERT INTO [log].[tLogTable] ([Message],[Level]) VALUES (@message, @log_level)" />

        <parameter>
            <parameterName value="@message" />
            <dbType value="String" />
            <size value="4000" />
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%message" />
            </layout>
        </parameter>

        <parameter>
            <parameterName value="@log_level" />
            <dbType value="String" />
            <size value="50" />
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%level" />
            </layout>
        </parameter>

    </appender>

    <logger name="ADONetAppender">
        <level value="ALL" />
        <appender-ref ref="ADONetAppender" />
    </logger>

    <logger name="FileLogger">
        <level value="ALL" />
        <appender-ref ref="FileAppender" />
    </logger>
</log4net>

数据库中的两列是:

  • 消息 varchar(max) 不为空
  • 级别 varchar(50) 不为空

谢谢!

【问题讨论】:

    标签: .net tsql logging log4net


    【解决方案1】:

    我猜你忘记在你想要启用日志记录的组件中添加以下内容:

    [assembly: log4net.Config.XmlConfigurator()]
    

    或来自代码:

    log4net.Config.XmlConfigurator.Configure();
    

    【讨论】:

      【解决方案2】:

      我自己发现了问题...

      private static readonly ILog Logger = LogManager.GetLogger( "FileLogger" );
      

      记录器的名称设置为“FileLogger” 所以通过添加

      <appender-ref ref="ADONetAppender" /> 
      

      里面

      <logger name="FileLogger">
          <level value="ALL" />
          <appender-ref ref="FileAppender" />
          <appender-ref ref="ADONetAppender" /> 
      </logger>
      

      解决了问题!

      还是谢谢!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-20
        相关资源
        最近更新 更多