Java 与从log4j输出的应用程序日志交互的最佳方式(同时也由应用程序更新)
可能比我想象的要简单,但我对以下几点感到困惑: 我希望能够向用户(在图形界面中)展示Log4j生成的日志 我可以按原样读取文件并将其显示出来,但我想知道是否有一种标准的方法来执行此操作,以便同时从应用程序的其他并发日志部分获取任何更新 log4j文件可以是多个文件,即滚动附件 也可以在没有日志记录的情况下进行演示。Java 与从log4j输出的应用程序日志交互的最佳方式(同时也由应用程序更新),java,multithreading,file,file-io,log4j,Java,Multithreading,File,File Io,Log4j,可能比我想象的要简单,但我对以下几点感到困惑: 我希望能够向用户(在图形界面中)展示Log4j生成的日志 我可以按原样读取文件并将其显示出来,但我想知道是否有一种标准的方法来执行此操作,以便同时从应用程序的其他并发日志部分获取任何更新 log4j文件可以是多个文件,即滚动附件 也可以在没有日志记录的情况下进行演示。 即查看最新的日志 更新: 我受Java 6的约束您可以使用Java 7的NIO2库在目录中的多个文件之一被修改时获得通知,并重新读取和显示它: 您可以使用Java 7的NIO2库在目
即查看最新的日志 更新:
我受Java 6的约束您可以使用Java 7的NIO2库在目录中的多个文件之一被修改时获得通知,并重新读取和显示它:
您可以使用Java 7的NIO2库在目录中的多个文件中的一个被修改时获得通知,并重新读取和显示它:
您是否尝试过以下工具:
您是否尝试过以下工具:
可能添加一个数据库appender(jdbcapender)并显示其中的日志项?可能添加一个数据库appender(jdbcapender)并显示其中的日志项?从log4j的: 有没有办法让log4j在配置文件发生更改时自动重新加载配置文件?
Yes. Both the DOMConfigurator and the PropertyConfigurator support automatic reloading
through the configureAndWatch method. See the API documentation for more details.
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配置。也许您可以考虑更多的“操作系统级”解决方案。 我不知道您使用的是win还是linux,但在linux上有一个非常好的命令“tail”。 所以,您可以使用创建操作系统进程,该进程类似于“tail-f yourLogFile.txt”。 然后读取返回的输出流。读取流将阻止等待进程的新输出可用,并将在有新输出可用时立即解除阻止,为您提供即时反馈和读取日志文件最新更改的可能性 但是,从Java关闭此进程时可能会遇到问题。 如果您知道进程id,您应该能够向它发送SIGTERM信号。或者您可以启动另一个进程,该进程可以查找“tail”进程的id,并通过“kill”命令或类似命令将其杀死
另外,如果这是您的平台,我不确定windows上是否有类似的工具可用。也许您可以考虑更多的“操作系统级”解决方案。 我不知道您使用的是win还是linux,但在linux上有一个非常好的命令“tail”。 所以,您可以使用创建操作系统进程,该进程类似于“tail-f yourLogFile.txt”。 然后读取返回的输出流。读取流将阻止等待进程的新输出可用,并将在有新输出可用时立即解除阻止,为您提供即时反馈和读取日志文件最新更改的可能性 但是,从Java关闭此进程时可能会遇到问题。 如果您知道进程id,您应该能够向它发送SIGTERM信号。或者您可以启动另一个进程,该进程可以查找“tail”进程的id,并通过“kill”命令或类似命令将其杀死
另外,如果这是您的平台,我不确定windows上是否有类似的工具可用。如果您编写自己的简单appender,并让应用程序在log4j配置中包含该appender,则每当事件写入其他appender时,都会调用appender,您可以选择显示事件消息,UI中的时间戳等。如果您编写自己的简单appender,并让应用程序在log4j配置中包含该appender,则每当事件写入其他appender时,都会调用appender,并且您可以选择在UI中显示事件消息、时间戳等。尝试XpoLog log4j/log4net连接器。它自动解析数据,并为其预定义了一组仪表盘: 按照以下步骤操作
尝试XpoLog log4j/log4net连接器。它自动解析数据,并为其预定义了一组仪表盘: 按照以下步骤操作
我只能使用Java6。但是+1在这种情况下,恐怕唯一要做的就是手动对文件进行定期轮询,查看它们是否已更改并重新播放…我只能使用Java 6。但是+1在这种情况下,恐怕唯一要做的就是手动对文件进行定期轮询,查看它们是否已更改并重新播放…除了日志级别,log4j.properties中还有哪些更改对您很重要?要推出和附加的文件数量和大小。我认为转换模式没有日志级别那么重要log4j.properties中还有哪些更改对您很重要文件的大小,以及我附加的文件的大小