我听说过术语事件源,但我对事件源框架和日志库之间的区别感到困惑,例如Log4J。谁能澄清一下,提供源代码示例并为我指明学习有关此编程主题的更多信息的正确方向?
最佳答案
我相信像 Log4J 这样的日志框架必须处理日志级别,例如调试、跟踪、错误等。事件源更针对磁盘中的消息或事件持久性。其想法是尽可能快地将消息保存到磁盘,而不会给应用程序增加延迟,这样您就可以记录系统中发生的所有事情,以便以后重播或审核。由于低延迟要求,大多数事件源库都是异步的,换句话说,实际的文件 I/O 将由一个单独的线程与执行日志记录的线程并行执行。在线程中执行此流水线的最快方法是使用干扰器模式。
下面是使用 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 的开发者之一
关于java - 什么是事件溯源以及如何在 Java 中实现它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24763709/