1

Log4Net を使用してログ ファイルにログを書き込み、ローカルの一時フォルダーの場所 (C:\temp ..) に保存しました。ここで、実行時にテキスト (ログ) ファイル名を変更したいので、構成ファイルとアプリケーションでコードを変更しました。しかし、ファイル名はローカルの一時フォルダーで変更できず、ログもテキスト ファイルに書き込まれませんでした。

この問題の解決策や、この問題を解決するための他の例を教えてください。

ここに私のコードは次のとおりです。

私の構成ファイル(Web.Config)の設定:

<appender name="RollingPatternFileAppender"  type="log4net.Appender.RollingFileAppender">
    <file type="log4net.Util.PatternString" value="%property{LogFileName}.log" />
    <appendToFile value="true" />
    <rollingStyle value="Size" />
    <maxSizeRollBackups value="10" />
    <maximumFileSize value="100MB" />
    <staticLogFileName value="false" />
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date{yyyy-MM-dd HH:mm:ss} %-5level : [%logger] - %message %newline" />
    </layout>
</appender>
<logger name="SPM.SERVER">
    <level value="DEBUG" />
    <appender-ref ref="RollingPatternFileAppender" />
</logger>

私のアプリケーションコードは次のとおりです。

ILog logger = LogManager.GetLogger("SPM.SERVER");
log4net.ThreadContext.Properties["LogFileName"] = "MyLog";
logger.Debug("Load Data",ex);
XmlConfigurator.Configure();

このコードは、ファイル内にログを書き込まず、ファイル名も変更しませんでした。このコードで私が間違っていたことを修正するか、この解決策を達成するための他の例を教えてください。

4

1 に答える 1

2

log4net では、複数のアペンダーを使用できます。特定のメッセージ セットのみをリッスンするようにそれぞれを構成できます。

この非常に優れたドキュメントセットをご覧ください。物事を行う方法に関する多くの例があります。

かなり大まかな例を次に示します。

<log4net>
  <appender name="A1" type="log4net.Appender.RollingFileAppender">
    <file value="Errors" />
    <appendToFile value="true" />
    <rollingStyle value="Date" />
    <staticLogFileName value="false" />
    <param name="DatePattern" value="dd.MM.yyyy'.txt'" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
    </layout>
  </appender>
  <appender name="A2" type="log4net.Appender.RollingFileAppender">
    <evaluator type="log4net.Core.LevelEvaluator">
      <threshold value="DEBUG"/>
    </evaluator>
    <filter type="log4net.Filter.StringMatchFilter">
      <stringToMatch value="Some special message" />
      <acceptOnMatch value="true" />
    </filter>
    <filter type="log4net.Filter.DenyAllFilter" />
    <file value="Debug" />
    <appendToFile value="true" />
    <rollingStyle value="Date" />
    <staticLogFileName value="false" />
    <param name="DatePattern" value="dd.MM.yyyy'.txt'" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
    </layout>
  </appender>
  <root>
    <appender-ref ref="A1" />
    <appender-ref ref="A2" />
  </root>
</log4net>
于 2012-05-24T09:04:48.093 に答える