アプリケーションのログに log4net を使用しています (これは WPF アプリケーションです)。ロギングはデバッグ モードではうまく機能しますが、デプロイされたバージョンでは機能しません。アプリケーションは C:\Program Files (x86)\MyApp にインストールされます (私は InnoSetup を使用してインストーラーを作成しています)。デバッグ モードでは、ログ フォルダーとログ ファイルが適切に作成されます。デプロイされたバージョンでは、何も表示されず、ログ フォルダーは作成されません。
ここに私のlog4net構成があります:
<?xml version="1.0"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup>
<log4net>
<appender name="FileAppender" type="log4net.Appender.RollingFileAppender">
<file value="log\main.log" />
<encoding value="utf-8" />
<appendToFile value="true" />
<maximumFileSize value="1000KB" />
<maxSizeRollBackups value="0" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger: %message%newline" />
</layout>
</appender>
<root>
<level value="INFO" />
<appender-ref ref="FileAppender" />
</root>
</log4net>
</configuration>
これは、クラスにログを書き込む方法です (この例は App.xaml.cs からのものです)。
protected static readonly ILog log = LogManager.GetLogger(typeof(App));
static App()
{
log4net.Config.XmlConfigurator.Configure();
}
private void Application_Startup(object sender, StartupEventArgs e)
{
log.Info("This is an info log");
}
レベルの値を ALL に変更しようとしましたが、何も変わりません。デバッグモードでうまく機能するので、設定するパラメータかもしれないと思います(ログファイルはフォルダ「x86\Debug\log\」に適切に作成されます.
私はいくつかの調査を行いましたが、それについては何も見つかりませんでした。