私はNinjatraderの戦略を記録するためにNlogを使用しています。戦略の各アカウントに関連するエントリを個別にフィルタリングできるように、すべてのnLogメッセージにプレフィックスとして戦略IDを追加できます。すべてのnLogメッセージにプレフィックスとして変数を追加します。
fileTarget.Layout = "${longdate} ${callsite} ${level} ${event-context:item=MyValue} ${message}";`
現在のレイアウトは上記のとおりです。私は、イベントコンテキスト:アイテムを使用しようとしましたが、すべてのメッセージのコンテキストアイテムを印刷する方法を知らない。
Logger log = LogManager.GetCurrentClassLogger();
LogEventInfo theEvent = new LogEventInfo(NLog.LogLevel.Debug, "", this.Account.Name);
logger.Log(theEvent);
を次のように私がしようとしたが、それは他の行の1行目Sim101とないのコンテキスト情報を持つ唯一の1行を印刷し終わりました。
2012-11-26 15:09:47.9777 NinjaTrader.Strategy.LODHOD.OnStartUp Debug Sim101
2012-11-26 15:09:48.3996 NinjaTrader.Strategy.LODHOD.OnBarUpdate Trace BAR UPDATE
2012-11-26 15:09:49.7902 NinjaTrader.Strategy.LODHOD.EntryOrders Info PLACED ENTRY ORDERS
どのようにすべてのログ行にSim101を印刷しますか?
ここに私の完全な質問です: 毎回トレース機能を呼び出す前にイベントを追加する必要がありますか?私はイベントのプロパティを追加し、logger.info(theEvent)を実行し、 はすぐに私のログのサフィックスを表示しました。 例:2012-11-28 14:18:52.3277 NinjaTrader.Strategy.LODHOD.OnStartUp情報ログイベント:Logger = '' Level = Info Message = 'd4d0d3849c2440f5b41de65d744ede61' SequenceID = 270 次のlogger.infoはキャプチャしませんでした私の物件 2012-11-28 14:18:52.9996 NinjaTrader.Strategy.LODHOD.OnBarUpdate情報バー更新 私が使用したコードはここにあります。 http://codeviewer.org/view/code:2c95 – junkone
と私が使ったログはここにあります。 http://codeviewer.org/view/code:2c96 – junkone
LogEventInfoクラスを使用してメッセージを作成する必要はなく、ログを記録するためにLogメソッドを使用する必要はありません。通常、ほとんどの人はそうしません。彼らは、.Info、.Debug、.Trace、etcメソッドを使用してロギングコードを記述します。私は私の答えにいくつかの例を追加します。 – wageoghe