2011-12-17 73 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

相关问题