web-dev-qa-db-ja.com

log.IsDebugEnabledがtrueになるようにlog4netを構成するにはどうすればよいですか?

Visual Studio 2005のASP.NETアプリケーションでlog4netを使用しようとしています。次のように、ロガーのインスタンスを宣言しました。

Private Shared ReadOnly log As ILog = LogManager.GetLogger("")

私はそれを次のように使おうとしています:

If log.IsDebugEnabled Then
   log.Debug("Integration Services Constructed")
End If

これが私の設定です:

<log4net>

    <root>
        <level value="DEBUG" />
        <appender-ref ref="RollingFileAppender" />
    </root>

    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
        <file value="..\\logs\\logfile.log"/>
        <appendToFile value="true"/>
        <rollingStyle value="Size"/>
        <maxSizeRollBackups value="10"/>
        <maximumFileSize value="1MB"/>
        <staticLogFileName value="true"/>
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"/>
        </layout>
        <filter type="log4net.Filter.LevelRangeFilter">
            <param name="LevelMin" value="DEBUG" />
            <param name="LevelMax" value="FATAL" />
        </filter>
    </appender>

</log4net>

残念ながら、log.IsDebugEnabledは常に偽です。
デバッグメッセージのみをログに記録できるようにlog4netを構成するにはどうすればよいですか?

28
Ryan Taylor

LogManager.GetLogger( "")を呼び出す前

Log4net.Config.XmlConfigurator.Configure();を呼び出す必要があります。 ASP.NETアプリでは、おそらくこの呼び出しをApplication_Startに入れたいと思うでしょう。

43
Anson Smith

はい、アンソンが言ったようにそれをしなさい。また、クラスライブラリでConfigureを呼び出す場合は、クラスに属性を追加することでそれを行うことができます。

[Assembly: XmlConfigurator(Watch = true)]

log4net.configファイルを使用している場合は、代わりに次のように使用してください。

[Assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
25
Tim Scott

Log4netに別の構成ファイルを使用している場合は、次のようにします。他のすべてのセットアップ手順に従った後、Visual Studioソリューションエクスプローラーでファイルを右クリックし、プロパティを選択し、[詳細]オプショングループを展開して、設定します。 「出力ディレクトリにコピー」の値は「常にコピー」です。それは魔法をするでしょう... :)乾杯!!

9
Anantha

設定ファイルではなくコードでlog4netを設定する場合は、GetLoggerの前にlog4net.Config.BasicConfigurator.Configureを呼び出すことができます。

2
Protector one

VB.NET-

<Assembly: log4net.Config.XmlConfigurator(Watch:=True)> 
1
developer9

ログを使用する前に、これを任意の方法で使用してください。

log4net.Config.XmlConfigurator.Configure();

App.Configでは、設定は次のようになります。

<root>
      <level value="ALL" />
      <appender-ref ref="AppenderName" />
    </root>
0