簡體   English   中英

Log4net到數據庫無法正常工作

[英]Log4net to database not working

我通過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)不為null
  • 級別varchar(50)不為null

謝謝!

我自己發現了問題...

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>

解決了問題!

不管怎么說,還是要謝謝你!

我想您忘了向您想要啟用日志記錄的組件添加以下內容:

[assembly: log4net.Config.XmlConfigurator()]

或通過代碼:

log4net.Config.XmlConfigurator.Configure();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM