2012-11-23 20 views
1

我有我的n日誌佈局像下面我如何格式化我的n日誌佈局

fileTarget.Layout = "${date} ${message}"; 

在我的代碼,我登錄像下面

logger.Info("ORDER UPDATE",order.Name,order.Instrument,order.OrderState); 

但是,僅記錄第一個字符串 爲如。

11/22/2012 22:37:16 ORDER UPDATE 
11/22/2012 22:37:16 ORDER UPDATE 
11/22/2012 22:37:16 ORDER UPDATE 
11/22/2012 22:37:16 ORDER UPDATE 

我很確定我在佈局中缺少某些東西,但無法弄清楚如何解決它。有人能指出我的錯誤嗎?

+0

你使用什麼語言? –

回答

2

要保存您的所有字符串你應該首先將它們連接起來。正如我所看到的,您的記錄器只能識別第一個字符串,因此您應該添加其他字符串,以使它們成爲一個字符串,因爲您實際上記錄了一個字符串,而不是幾個。或更新您的記錄器識別衆多的字符串,我的意思是這樣的:fileTarget.Layout = "${date} ${message1} ${message2} ${message3} ${message4}";

+0

連接字符串的建議對於每個NLog作者是錯誤的:[請參閱本節中的「提示」](https://github.com/nlog/nlog/wiki/Tutorial#emitting-log-messages) - 嘗試[我的回答](http://stackoverflow.com/a/15772781/1037948)低於 – drzaus

1

你能不能做這樣的事情:

Info("ORDER UPDATE: " + order.Name + ", " + order.Instrument + ", " + order.OrderState); 
2

或者你可以使用string.Format(即Console.WriteLine)風格期待令牌更換,這也許正是你打算使用:

logger.Info("ORDER UPDATE: Name = {0}; Instrument = {1}; State = {2} ", order.Name, order.Instrument, order.OrderState); 

而不是假設每個Logger請求的消息數量相同。

+0

由於性能原因,這是「連接」nlog消息的推薦方式 - [請參閱NLog教程本節中的「提示」](https ://github.com/nlog/nlog/wiki/Tutorial#emitting-log-messages) – drzaus