3

アプリケーションのログに 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\」に適切に作成されます.

私はいくつかの調査を行いましたが、それについては何も見つかりませんでした。

4

2 に答える 2

1

「C:\Program Files (x86)\MyApp」フォルダーを右クリックし、[プロパティ] _> [セキュリティ] で、アプリケーションを実行しているユーザーを書き込み権限に追加できますか? または、アプリを右クリックして「管理者として実行」しますか? 違いはありますか?

于 2013-09-09T10:28:29.820 に答える