Java 将日志输出重定向到HTML文本区域

Java 将日志输出重定向到HTML文本区域,java,apache,jsp,logging,Java,Apache,Jsp,Logging,我目前正在使用JSP编写一个web应用程序,并在应用程序的运行生命周期中将日志设置写入文件。本例中的日志信息对用户非常重要,我希望以某种方式显示它。起初,我考虑在Logger对象本身上使用某种actionListener,并在JSP中使用scriptlet将文本追加到文本区域元素中,但我不确定这是否有效。有没有一种简单或已知的方法可以做到这一点?非常感谢任何反馈和帮助。现在我正在使用常规的apachelogger对象,但我当然愿意使用外部库(如Log4j)或其他选项来实现我所需要的 我不能这样做

我目前正在使用JSP编写一个web应用程序,并在应用程序的运行生命周期中将日志设置写入文件。本例中的日志信息对用户非常重要,我希望以某种方式显示它。起初,我考虑在Logger对象本身上使用某种actionListener,并在JSP中使用scriptlet将文本追加到文本区域元素中,但我不确定这是否有效。有没有一种简单或已知的方法可以做到这一点?非常感谢任何反馈和帮助。现在我正在使用常规的apachelogger对象,但我当然愿意使用外部库(如Log4j)或其他选项来实现我所需要的


我不能这样做吗?每次记录器写入信息时,都需要更新文本区域,而不需要实际刷新整个页面。如果无法完成此操作,是否建议使用弹出窗口进行处理?这可能是通过弹出窗口完成的,可能是通过JSwing,但这可能看起来很难看。

您考虑过做一些简单的定期ajax轮询吗?下面是一个使用jQuery的小示例,它发布到某个jsp,然后调用另一个javascript函数来更新您的textArea:

function doPoll(){
    $.post('ajax/log.jsp', function(data) {
        updateTextArea(data);  // process results here
        setTimeout(doPoll,5000);
    });
}
一个简单但可能非常简单的方法是,在ajax发布时让控制器读取生成的日志文件,并返回最新的更改(或整个日志)


编辑:developerwjk快了一点:)如果日志很重要,请将其保存在数据库中的某个位置。然后在post中检索日志消息并将其传递回ajax。

使用某种键跟踪您正在数据库中登录的内容,然后在浏览器中加载页面后,向servlet发出ajax请求,servlet将返回日志文本,在Javascript中,当收到Ajax响应时,将文本设置到文本框中。

这样做可能会带来安全问题。处理时间间隔并在文本区域元素发生更改时使用文件中的内容更新文本区域元素是我考虑过的事情。我不喜欢ajax poling,但它看起来肯定是一个有效的解决方案。非常感谢这个想法。我将再次发帖。由于我在类中使用Java Logger对象,我可能会考虑使用StringBuffer将日志语句附加到JSP中,并在JSP中编写一个脚本,检查缓冲区大小是否大于更新文本区域之前的大小,如果没有,则不更新文本区域。考虑到控制器通常只在某些请求被传递给他们时才进行工作。必须想出方法来处理请求之间服务器端发生的事件。