2

現在、MassTransit を利用する Windows サービスがあります。この Windows サービスは、すべてのログ記録に Log4Net を使用していますが、内部の MassTransit ログ記録にも Log4Net を有効にしたいと考えています。しかし、私はしたい:

  • MT ログを Windows サービス ログとは別のファイルに記録します。
  • 単一の (既存の) Log4Net 構成ファイルを使用して、両方の出力を構成します

sbc.UseLog4Net()バスの初期化時に既に追加しましたが、うまく機能します。ただし、Windows サービス ログと同じファイルに書き込みます。

sbc.UseLog4Net(@"log4net.config")これを達成するために別のファイルで 呼び出すことができることを認識しています。

私が本当に望んでいるのは、これを達成するために現在の log4net.config ファイルを変更できるようにすることです。

4

1 に答える 1

2

もちろん、これはそれほど難しいことではありません。log4net 構成で 2 つのアペンダーをセットアップします。

  <appender name="RollingFile1" type="log4net.Appender.FileAppender">
    <file value="log1.log" />
    <appendToFile value="false" />

    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%-5p %d{hh:mm:ss} %message%newline" />
    </layout>
  </appender>
  <appender name="RollingFile2" type="log4net.Appender.FileAppender">
    <file value="log2.log" />
    <appendToFile value="false" />

    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%-5p %d{hh:mm:ss} %message%newline" />
    </layout>
  </appender>

次に、各アペンダーに 1 つずつ、2 つのロガーをセットアップします。

<logger name="MassTransit">
  <level value="INFO" />
  <appender-ref ref="RollingFile1" />
</logger>

<logger name="MyLogger">
  <level value="INFO" />
  <appender-ref ref="RollingFile2" />
</logger>

各ロガーを適切なファイルに向けるだけで、1 日で終わります。これらの要素がどのように機能するかについて質問がある場合は、http: //logging.apache.org/log4net/release/manual/configuration.htmlのマニュアルを参照してください。

于 2013-08-15T12:35:59.900 に答える