アスペクトからログエントリを書き込むときに、自分のログファイルのレイアウトを変更する必要があります。時間の経過とともに他の設定も変更する必要があります。別の用途に合わせてレイアウトを変更する必要があります
必要なレイアウトを作成する2つのFileTargetsを作成しました。
LoggingConfiguration config = new LoggingConfiguration();
LoggingConfiguration aspectConfig = new LoggingConfiguration();
FileTarget fileTarget = new FileTarget();
fileTarget.Name = "fileTarget";
fileTarget.Layout = "${longdate} ${machineName} ${callsite} ${message} ${exception:format=tostring}";
fileTarget.FileName = String.Format("{0}Admin.log", Config.DatabasePath);
fileTarget.KeepFileOpen = false;
FileTarget aspectTarget = new FileTarget();
aspectTarget.Name = "aspectTarget";
aspectTarget.Layout = "${longdate} ${machineName} ${message} ${exception:format=tostring}";
aspectTarget.FileName = String.Format("{0}Admin.log", Config.DatabasePath);
aspectTarget.KeepFileOpen = false;
LoggingRule rule2 = new LoggingRule("*", LogLevel.Trace, fileTarget);
config.LoggingRules.Add(rule2);
LoggingRule aspectRule = new LoggingRule("aspects", LogLevel.Trace, aspectTarget);
aspectConfig.LoggingRules.Add(aspectRule);
LogManager.Configuration = config;
この段階では、それ以外の変更点や相違点があります。
『を使用して設定すなわち:
var log = LogManager.GetCurrentClassLogger();
log.Fatal("##########################################");
を私は何をしたいがされて使用することができる『「デフォルトまたは』*の罰金、次の作品を使用してaspectRule』ではなく、デフォルトを 『*』ロガーを呼び出して 'aspectRule'を指定することで
私はこれが働くだろうと思っていた:
var log = LogManager.GetLogger("aspects");
log.Fatal("########################################");
すべてが順調と良いですが、私は、私は私も作成しない、特にコードのように「側面」と呼ばれる新しいロガーを定義する方法を見ることができません'*'という名前のロガー:-)
XML設定ファイルを使用していないため、プログラムで使用するには解決策が必要です。
アイデア?
EDIT:
私はこの例のように1つのログエントリを記述する必要があります。
if (someCondition)
logger.Fatal("#############"); // use layout in fileTarget
else
logger.Fatal("##############"); // use layout in aspectTarget
は何あなたが示唆することは、私がもともと持っていたものです。つまり、log.Fatal( "####")を実行すると、エントリがログに2回記録されます。私の質問は - どのように私は1つのエントリを記録するのですか?私はそれをもっと明確にするために私の質問を改善しました... – David
ありがとう - それはよく分かります。 LogManager.GetLogger(????)は、私の代わりに何を置くべきかについて混乱させました。 。 – David
Yup、特定のターゲットの特定のロガー。 NLogは本当に素晴らしいライブラリです。楽しい。 – AVIDeveloper