Log4JavaScript 服务器端接收

Posted

技术标签:

【中文标题】Log4JavaScript 服务器端接收【英文标题】:Log4JavaScript server-side receiving 【发布时间】:2014-09-19 22:24:24 【问题描述】:

我正在尝试使用 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、XML、URL 编码的表单数据)。你的理想是什么? 我更愿意将它作为 JSON 发送。 (这是我试图做的,但没有完全明白) 【参考方案1】:

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

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 对此进行了介绍。

【讨论】:

哦!第 3 行和第 4 行是我所缺少的!非常感谢! :)

以上是关于Log4JavaScript 服务器端接收的主要内容,如果未能解决你的问题,请参考以下文章

实现Java客户端上传文件与Java服务端接收文件

Java TCP 网络通信编程

# Rsync服务实战

移动端接口碰到了服务器无法解析ios端传回?

深入浅出:了解前后端分离优势以及前后端接口联调

私有云车牌识别支持app端pc端H5端接口调用