log.IsDebugEnabledがtrueになるようにlog4netを構成するにはどうすればよいですか?
-
03-07-2019 - |
質問
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
は常にfalseです。
デバッグメッセージのみをログに記録できるようにlog4netを設定するにはどうすればよいですか
解決
LogManager.GetLogger(&quot;&quot;)を呼び出す前に
log4net.Config.XmlConfigurator.Configure()を呼び出す必要があります。 ASP.NETアプリでは、おそらくこの呼び出しをApplication_Startに配置する必要があります
他のヒント
はい、アンソンが言ったようにやってください。また、クラスライブラリでConfigureを呼び出す場合は、クラスに属性を追加することでそれを実行できます。
[assembly: XmlConfigurator(Watch = true)]
そして log4net.config
ファイルを使用している場合は、代わりに次のように使用します:
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
log4netに別の構成ファイルを使用している場合は、これを行います。他のすべてのセットアップ手順に従って、Visual Studioソリューションエクスプローラーでファイルを右クリックし、プロパティを選択して、「詳細」を展開します。オプショングループ、「出力ディレクトリにコピー」を設定します。 「常にコピー」としての値。これで魔法が... :)乾杯!!
設定ファイルではなくコードでlog4netを設定している場合、 GetLogger
の前に log4net.Config.BasicConfigurator.Configure
を呼び出すことができます。
VB.NET-
<Assembly: log4net.Config.XmlConfigurator(Watch:=True)>
ログを使用する前に、任意の方法でこれを使用します。
log4net.Config.XmlConfigurator.Configure();
App.Configでは、設定は次のようになります。
<root>
<level value="ALL" />
<appender-ref ref="AppenderName" />
</root>