什么是事件源,我如何在Java中实现它?

时间:2014-07-15 16:43:10

标签: java logging file-io

我听说过事件采购一词,但我对事件采购框架日志库之间的区别感到困惑,例如Log4J的。任何人都可以澄清,提供一个源代码示例,并指出我正在学习更多有关此编程主题的正确方向吗?

1 个答案:

答案 0 :(得分:0)

我认为Log4J等日志框架必须处理日志级别,例如Debug,Trace,Error等。事件源更多地针对磁盘中的消息或事件持久性。我们的想法是尽可能快地将消息保存到磁盘,而不会给应用程序增加延迟,因此您可以记录系统中发生的所有事情,以便以后重播或审核。由于低延迟要求,大多数事件源库将是异步的,换句话说,实际文件i / o将由与执行日志记录的线程并行的单独线程执行。在线程中执行此操作的最快方法是使用disruptor模式

以下是使用CoralLog的示例,这是一个级别日志记录和事件源代码框架,我是其中一个开发人员:

Logger myLogger = Log.createLogger("/home/coralblocks/logs/", "myLogFile.log");

myLogger.log(byteArray);
myLogger.log(stringBuilder);
myLogger.log(byteBuffer);
myLogger.log("This is a message!", "a=", a, "b=", b);
// log as much as you want...

// you can also do:
myLogger.drainAndWait(); // blocking call

// and when you are done:

myLogger.close(); // non-blocking call

// or:
myLogger.drainCloseAndWait(); // blocking call

免责声明:我是CoralLog的开发者之一