javascript - Log4JavaScript服务器端接收

标签 javascript html ajax jsp log4javascript

我正在尝试使用 Log4Javascript 将客户端错误发送到服务器,然后将结果写入文件。我正在使用 AjaxAppender 尝试将数据发送到服务器。我从一个简单的“Hello world”开始,看看我是否可以弄清楚如何接收错误消息,因为文档字面意思是“没有提供服务器端代码”。

基本上,我对此还比较陌生。一个优秀的 Java 程序员,HTML、CSS、Javascript 等。但我最近进入了 JSP 的世界,我试图使用它来接收错误消息并(目前)将它们打印到调试控制台。

我的index.jsp 文件中的代码最少。只是一个 h1 标签,上面写着“Hello World”并链接到我的 javascript 和 jquery。

我的Javascript如下:

var url = "logger.jsp";
$(function(){
    var log = log4javascript.getDefaultLogger();
    var ajaxAppender = new log4javascript.AjaxAppender(url);
    ajaxAppender.addHeader("Content-Type", "application/json");
    log.addAppender(ajaxAppender);
    window.onerror = function(errorMsg, url, lineNumber){
        log.fatal("Uncaught error "+errorMsg+" in "+url+", line "+lineNumber);
    };
    log.info("Hello World");
}

我不确定数据如何传递到服务器,因此我决定列出所有属性并从这里开始。到目前为止,我有以下服务器端代码(logger.jsp):

<%@page import="java.util.*"%>

<%
for (Enumeration e = session.getAttributeNames(); e.hasMoreElements(); ) {     
    String attribName = (String) e.nextElement();
    Object attribValue = session.getAttribute(attribName);
    System.out.println(attribName+" - "+attribValue);
}
%> 

它将以下内容打印到控制台:

logger - test.Logger@5a5517ef

我已经进行了大量的 Google 搜索,但到目前为止没有发现任何对服务器端有帮助的结果。我很可能错过了一些东西,所以如果有人经历过这个并且有任何提示,甚至是一个关于如何从 Log4JavaScript 的 AjaxAppender 接收消息的非常简单的示例,我将不胜感激!

最佳答案

如果您想发送 JSON,请使用 JsonLayout在您的 AjaxAppender 中:

var log = log4javascript.getDefaultLogger();
var ajaxAppender = new log4javascript.AjaxAppender(url);
var jsonLayout = new log4javascript.JsonLayout();
ajaxAppender.setLayout(jsonLayout);
log.addAppender(ajaxAppender);
log.info("Hello World");

这将以 HTTP 表单数据的形式发送日志消息,其中包含一个名称/值对,其名称为 data,其值是日志消息的 JSON 表示形式。

这在 documentation for AjaxAppender 中有介绍。 .

关于javascript - Log4JavaScript服务器端接收,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25000207/

相关文章:

javascript - 从 socket.io 处理程序访问父范围

javascript - Colorbox + Form,提交仅适用于 Enter 按钮(不是 onclick)

javascript - jQuery UI Slider - 根据选择而变化的自定义滑动按钮

html - 如何在图像周围获得部分圆形边框?

javascript - 将页面从 ajax jquery 请求删除到另一个页面

javascript - 根据大小限制 HTML 内容

javascript - 如何在罗马js日历的afterEQ中包含多个条件?

css - 如何使用 bootstrap 将浏览器窗口分成两个画面?

javascript - AJAX+Laravel : after I successfully do process in AJAX, 其他功能无法使用

javascript - 离线/在线状态 PHP 的基本轮询协议(protocol)