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

时间:2014-06-02 16:16:15

标签: java apache jsp logging

我目前正在使用JSP编写Web应用程序,并在应用程序的运行生命周期内将日志记录设置写入文件。在这种情况下,日志信息对用户非常重要,我想以某种方式显示它。起初我想到在Logger对象本身上使用某种actionListener并使用JSP中的scriptlet将文本追加到Text Area元素中,但我不确定这是否有效。有一种简单或已知的方法可以做到这一点吗?非常感谢任何反馈和帮助。现在我正在使用常规的Apache Logger对象,但我肯定愿意使用Log4j等外部库或其他选项来实现我的需要。

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

2 个答案:

答案 0 :(得分:1)

您是否考虑过进行一些简单的定期ajax轮询?这是一个使用jQuery的小例子,它发布到一些jsp,然后调用另一个javascript函数来更新你的textArea:

function doPoll(){
    $.post('ajax/log.jsp', function(data) {
        updateTextArea(data);  // process results here
        setTimeout(doPoll,5000);
    });
}

一个简单但可能非常明显的可能性是让你的控制器在ajax发布并返回最新的更改(或整个日志)时读取生成的日志文件。

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

答案 1 :(得分:-1)

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