5

私は log4net を使用しており、param name="File" value= "C:\Application.log" で完全にセットアップしました。ただし、ファイルは C: に作成されません。私は Windows 7 を実行していますが、パーミッションのようなものがファイルの作成を妨げている可能性があります。

app.config は次のとおりです。

<?xml version="1.0" encoding="utf-8" ?>  
<configuration>  
  <configSections>  
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net" />  
  </configSections>`  

  <log4net>  
    <root>  
      <level value="DEBUG" />  
      <appender-ref ref="LogFileAppender" />  
    </root>  
    <appender name="LogFileAppender“ type=“log4net.Appender.RollingFileAppender" >  
      <param name="File" value="C:\Users\Mohit\Documents\Application.log" />  
      <param name="AppendToFile" value="true" />  
      <rollingStyle value="Size" />  
      <maxSizeRollBackups value="10" />  
      <maximumFileSize value="10MB" />  
      <staticLogFileName value="true" />  
      <layout type="log4net.Layout.PatternLayout">  
        <param name="ConversionPattern“ value=“%-5p%d{yyyy-MM-dd hh:mm:ss} – %m%n" />  
      </layout>  
    </appender>  
  </log4net>  
</configuration>
4

4 に答える 4

7

実際のファイル名を指定する必要があります。構成内で定義したのはフォルダー名です。それ以外の:

<param name="File" value="C:\Users\Mohit\Documents" />

次のようなものを使用します。

<param name="File" value="C:\Users\Mohit\Documents\log.txt" />

また、アプリケーションがログをルート c: フォルダーに書き込むには、昇格されたアクセス許可が必要になる可能性があります。UAC では、ルート フォルダーに書き込むことはできません。

Andy が言ったように、次のような Windows Users フォルダーのサブフォルダーを選択することをお勧めします。

c:\Users\Mohit\AppData\Local\<MyApplication>

log4net には、特別なフォルダーをターゲットにするために使用できる定義済みの変数がいくつかあります。ここSOについていくつか質問があります:

log4net の共通アプリケーション データ フォルダを指定する方法は?

C# app.config ファイルで appData ファイル パスを指定する方法

于 2010-01-08T00:17:44.483 に答える
1

私の問題は、App.config ファイル内のセクションの順序でした。最初に<startup>セクションがあり、次に<configSections>. 何らかの理由で、Windows アプリではエラーが発生しませんでしたが、コンソール アプリではエラーが発生しました。どうやら<configSections>下の最初のセクションに違いない<configuration>

したがって、これの代わりに:

<configuration>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>

これを行う:

<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
于 2013-06-06T16:18:51.680 に答える
1

はい、アプリケーションを実行しているユーザーが c: への書き込み権限を持っていることを確認してください。

いっそのこと、アプリケーション ログをルートの c:\ ディレクトリに書きたくないでしょう。アプリがインストールされている場所、または [ドキュメントと設定] (または Windows 7 の同等の場所) の下の場所を選択することをお勧めします。

于 2010-01-07T23:45:21.120 に答える
0

私の問題を解決したのは、基本的に CTBrewski がここに投稿したもの (+1 btw!)でしたが、私の App.config には configSections エントリではなく appSettings エントリがありました。

log4net 構成エントリを含む appSettings エントリをスタートアップ エントリの上に移動すると、ログがユーザー プロファイルに書き込まれました。

<configuration>
  <appSettings>
    <add key="log4net.Config" value="log4net.config" />
    <add key="log4net.Config.Watch" value="True" />
    <add key="ClientSettingsProvider.ServiceUri" value="" />
  </appSettings> 
  <startup>
    <supportedRuntime version="v2.0.50727" />
  </startup>
  ...
  ...

そしてもちろん、私のアペンダーは次のようになります。

  <appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
    <file value="${LOCALAPPDATA}/Synclio/Logs/SynclioWin.log" />
    <appendToFile value="true" />
    <maximumFileSize value="5000KB" />
    <maxSizeRollBackups value="2" />

    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%level %thread %logger - %message%newline" />
    </layout>
  </appender>
于 2013-08-29T21:24:06.700 に答える