9

バージョンを使用して1.2.11います。ロギングは開発マシンで機能しますが、展開時にディレクトリまたはログを作成しません。

私は試した:

  • IUSR、全員、ローカル ユーザーに完全なディレクトリ アクセスを許可します。
  • アプリ プールをローカル管理者アカウントとして実行します。
  • Phil Haack がここで説明しているように、内部デバッグを使用します。

各変更後にアプリ プールを停止および開始しました。

出力ファイルには何も生成されません。

私のlog4Net構成は以下です。次に何を試すかについて何か考えはありますか?

<?xml version="1.0"?>
<log4net debug="true">
  <appender name="file" type="log4net.Appender.RollingFileAppender">
    <file value="..\Logging\log.txt" />
    <appendToFile value="true" />
    <rollingStyle value="Composite" />
    <datePattern value="yyyyMMdd" />
    <maxSizeRollBackups value="10" />
    <maximumFileSize value="1MB" />
    <threshold value="DEBUG" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
    </layout>
  </appender>
  <appender name="console" type="log4net.Appender.DebugAppender">
    <layout type="log4net.Layout.PatternLayout">
      <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] &lt;%X{auth}&gt; - %m%n" />
    </layout>
  </appender>
  <root>
    <level value="ALL" />
    <appender-ref ref="file" />
    <appender-ref ref="console" />
  </root>
</log4net>
4

5 に答える 5

8

ディレクトリとファイルが作成されていない場合は、実行時に構成が読み取られていない (したがって使用されていない) 可能性があります。

構成を接続する Log4net のコードを 1 行追加するのをいつも忘れています。このコードは通常、アプリケーションのブートストラップ クラスに表示されます (たとえば、ASP.NET アプリの Global.asax)。

XmlConfigurator.Configure(new System.IO.FileInfo(configFile));  // configFile being the path to the file.

上記のインラインの代わりに、この属性をAssemblyInfo.csファイルに追加できます。

[assembly: log4net.Config.XmlConfigurator(Watch = true)]

いずれにせよ、これにより log4net が接続されます。詳細については、log4net docs の Manual Configuration セクションを参照してください

于 2013-06-17T08:21:04.253 に答える
3

私には許可の問題のように聞こえます。ほとんどの場合、アプリケーションがログ ファイルを書き込むための特別なアクセス許可を有効にする必要がないディレクトリを使用します。

これが私がlog4netで一般的に使用するものです:

<file type="log4net.Util.PatternString" value="${ALLUSERSPROFILE}/<Company Name>/Logs/<Program Name>/<Log file name>.txt" />

もちろん、上記の会社名、プログラム名、ログ ファイル名は実際の値に置き換える必要があります。

これは、アクセスが通常制限されていない ProgramData フォルダーに書き込みます。%ProgramData% または %AllUsersProfile% と入力して、エクスプローラーでこのフォルダーに移動できます。

この方法について私が気に入っているもう 1 つの点は、ほぼすべての Microsoft O/S で機能することです。XP、ビスタ、7、8

于 2013-06-14T20:02:00.087 に答える