可能比我想的要简单,但我对以下内容感到困惑:
我希望能够向用户(在图形界面中)显示Log4j生成的日志。
我可以直接读取文件并显示它,但我想知道是否有一种标准的方法来实现它,以便同时从应用程序的其他部分获得任何更新同时记录。
log4j文件可以是多个,即滚动appender
也可以在没有记录的情况下进行演示 即日志查看最新
更新
我是Java 6的约束
答案 0 :(得分:1)
您可以使用Java 7的NIO2库在目录中修改多个文件中的一个时收到通知,并重新读取&显示它:
http://blogs.oracle.com/thejavatutorials/entry/watching_a_directory_for_changes
答案 1 :(得分:0)
答案 2 :(得分:0)
也许添加数据库appender(JDBCAppender)并从中显示日志条目?
答案 3 :(得分:0)
了解log4j的official documentation:
有没有办法让log4j在配置文件发生变化时自动重新加载?
Yes. Both the DOMConfigurator and the PropertyConfigurator support automatic reloading
through the configureAndWatch method. See the API documentation for more details.
对于使用GUI按需重新加载log4j配置,我建议通过J2EE应用程序中的servlet公开它,以便可以在网页中编辑整个文件(文本区域可能是),一旦保存,您可以覆盖现有的log4j文件并重新加载log4j config。
答案 4 :(得分:0)
也许您可以考虑更多“操作系统级”解决方案。 我不知道你是使用win还是linux,但是在Linux上有一个非常好的命令“tail”。 因此,您可以使用ProcessBuilder创建操作系统进程,类似于“tail -f yourLogFile.txt”。 然后读取返回的Process的OutputStream。读取流将阻止等待进程的新输出可用,并在可用时立即取消阻止,为您提供即时反馈并可以读取日志文件的最新更改。
但是,您可能无法从Java关闭此过程。 如果您知道进程ID,则应该能够向其发送SIGTERM信号。或者你可以启动一个不同的进程,它可以查找“尾部”进程的id并通过“kill”命令或类似的东西杀死它。
此外,我不确定Windows上是否有类似的工具,如果这是您的平台。
答案 5 :(得分:0)
如果您编写自己的简单appender并让您的应用程序在log4j配置中包含该appender,则只要将事件写入其他appender就会调用appender,并且您可以选择显示事件消息,时间戳等。用户界面。
答案 6 :(得分:0)