2011-12-17 72 views
2

我試圖提供使用隊列系統和定時器,以減少登記時間在我的主線程一個Logger時間戳。但是,我想捕獲創建日誌消息的時間,而不是寫日誌消息的時間。雖然我可以將時間戳添加到消息中,但我希望可以選擇將時間戳提供給log4net,以便我可以使用模式提供程序來格式化寫入的日誌消息。如何提供自己的log4net

如果提供時間戳值是不可能的。在記錄之前輕鬆格式化消息模式的方法會很棒。

例如:

<param name="ConversionPattern" value="%d [%t] %-5p %c %m%n" /> 

- > 2011-12-17 00:00:38511 [TestRunnerThread] DEBUG GlobalLogger 12:00:38.411400 - 線路1

回答

1

當看看log4net實現內部結構,你會發現在appender編寫日誌時沒有創建時間戳,但是在構建LoggingEvent的實例時。在log4net的抽象Logger類中,創建了一個新的LoggingEvent實例,其中包含一個設置爲DateTime.Now的時間戳記。你可以在你的appender中使用這個時間戳。

+0

原因分配時間戳手動的是,我已經實現了一個排隊系統。在排隊系統中,記錄事件使用計時器完成,目前爲100ms。在使用排隊系統進行一些測試之後,我看到了我提供的時間戳,而log4net的時間戳可以是200ms +。這可以通過我在我的帖子中給出的例子來看出,它顯示了100ms的差異。 – galford13x 2011-12-17 17:38:41

+0

這意味着您首先將日誌消息排隊,並且在特定時間將日誌記錄到log4net中進行批處理?你沒有實現一個appender? appender方法將是這種排隊實現的「正確方法」... – saintedlama 2011-12-19 19:05:02

4

這可能是有點晚了,但代碼樣本異步的appender here

相關問題