web-dev-qa-db-ja.com

Nlogを使用して複数のファイルにログインする

ロギングの目的でNLogを使用しています。

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

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

  <!-- make sure to set 'Copy To Output Directory' option for this file -->
  <!-- go to http://nlog-project.org/wiki/Configuration_file for more information -->

  <targets>
    <target
      name="logfile"
      xsi:type="File"
      layout="${message}"
      fileName="${basedir}../Data/debugLog1.txt"
      archiveAboveSize ="5000000"
      maxArchiveFiles="2"/>
  </targets>

  <rules>
    <logger name="*" minlevel="Trace" writeTo="logfile" />
  </rules>
</nlog>

debugLog1.txtにデータを記録しています。ここで、プロジェクトの別の場所からデータをログに記録しますが、このデータは別のタイプなので、debugLog2.txtを作成してデータを記録します。上記のコードを変更してこれを行うにはどうすればよいですか

28
user3061597

別のロガーを定義する必要があると思います。

<logger name="SpecialLogger" minlevel="Trace" writeTo="logfile2" />

そして、プロジェクトログのこの別の場所に:

var logger = LogManager.GetLogger("SpecialLogger");
35
Alexander Burov

プログラムの別の部分からの情報を別のファイルに記録する場合は、ロガーと別のターゲットを追加できます。

たとえば、2つの異なるタスクを完了しているプログラムがあり、それらのタスクを個別に記録する場合は、次のようにします。

<targets>
  <target
    name="task1File"
    xsi:type="File"
    layout="${message}"
    fileName="${basedir}../Data/debugLog1.txt"
    archiveAboveSize ="5000000"
    maxArchiveFiles="2"/>
  <target
    name="task2File"
    xsi:type="File"
    layout="${message}"
    fileName="${basedir}../Data/debugLog2.txt"
    archiveAboveSize ="5000000"
    maxArchiveFiles="2"/>
</targets>

<rules>
  <logger name="task1Logger" minlevel="Trace" writeTo="task1File" />
  <logger name="task2Logger" minlevel="Trace" writeTo="task2File" />
</rules>

次に、プログラムで以下にアクセスします。

var task1Logger = NLog.LogManager.GetLogger("task1Logger")
var task2Logger = NLog.LogManager.GetLogger("task2Logger")
37
nahammel

ファイル名にレイアウトレンダラーを使用できることに注意してください( カスタムレイアウトレンダラー でも)。これにより、複数のファイルも作成されます。

 <target
      name="logfile"
      xsi:type="File"
      layout="${message}"
      fileName="${basedir}../Data/${level}.txt" 
      ...
   />

この例では、各ログレベル(致命的、エラー、警告、情報、デバッグ、トレース)のログファイルです。

1
Julian