java - 什么是事件溯源以及如何在 Java 中实现它?

标签 java logging file-io

我听说过术语事件源,但我对事件源框架日志库之间的区别感到困惑,例如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/

相关文章:

java - 区分服务器线程(用户连接)

java - 带有 MemoryMappedFile 和中断文件的 Log4j2

android - 移动sd卡中的文件

sql - MS SQL 2008 如何从日志中读取

ruby-on-rails - 使用 Rails 4 和结构化日志记录,如何将请求 ID 字段添加到日志中?

python - 为什么我的脚本没有写入文件?

Java 代码在使用用户输入循环运行时保持读入文件

java - 如何阻止 jzy3d 打印帮助消息?

javascript - 转换 HTML Canvas 内容以在 Laravel 后端发送 Angular 表单数据请求

java - 检查点是否在三角形内的性能(3D)