ロギングの目的で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
を作成してデータを記録します。上記のコードを変更してこれを行うにはどうすればよいですか
別のロガーを定義する必要があると思います。
<logger name="SpecialLogger" minlevel="Trace" writeTo="logfile2" />
そして、プロジェクトログのこの別の場所に:
var logger = LogManager.GetLogger("SpecialLogger");
プログラムの別の部分からの情報を別のファイルに記録する場合は、ロガーと別のターゲットを追加できます。
たとえば、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")
ファイル名にレイアウトレンダラーを使用できることに注意してください( カスタムレイアウトレンダラー でも)。これにより、複数のファイルも作成されます。
<target
name="logfile"
xsi:type="File"
layout="${message}"
fileName="${basedir}../Data/${level}.txt"
...
/>
この例では、各ログレベル(致命的、エラー、警告、情報、デバッグ、トレース)のログファイルです。