一个记录到我们后端的JavaScript前端日志记录系统?

时间:2011-02-17 20:07:20

标签: javascript jquery logging xmlhttprequest

我们为服务器端服务建立了日志记录系统。具体来说,我们的Django项目大量使用了Python日志记录模块,因此我们的集中式日志记录系统会调用对logger.info()logger.warn()logger.error()的调用。

我想在我们的前端有一个等价物,我有一些想法:

  1. 会通过JavaScript公开某种自定义日志记录对象,它会通过XmlHttpRequest将消息发送到后端。

  2. 我希望客户端具有相同的日志记录级别:debuginfowarningerror

    < / LI>
  3. 当我们在本地开发(调试模式)时,我希望通过console.log()将这些日志消息记录到浏览器/ Firebug控制台。

  4. 在制作中,debug消息应完全删除。

  5. 我记得有一种方法可以捕获所有未捕获的JavaScript异常,因此应该在error级别记录这些异常。

  6. 我们已经在使用Google Analytics event tracking了,对于我们创建的任何系统来说,不管怎么说都很好。

  7. 这是个好主意吗?你会怎么做?有现成的解决方案吗?

    (FWIW,我们在前端使用jQuery。)

    更新:此处简化问题:https://stackoverflow.com/questions/1423267/are-there-any-logging-frameworks-for-javascript

3 个答案:

答案 0 :(得分:13)

首先,我编写并保持log4javascript,所以我在前面宣布我的兴趣。我每天都在工作中使用它,所以我作为用户有一些经验。以下是我将如何处理您的问题,特别是与log4javascript:

相关的问题
  1. 使用log4javascript的AjaxAppender进行服务器日志记录;

  2. 支持
  3. debuginfowarningerror,以及tracefatal;

  4. 使用BrowserConsoleAppender登录FireBug或本机浏览器控制台;

  5. 如果您不想从生产代码中删除所有调试日志记录调用,则可以调整记录器的阈值(例如,使用log.setLevel(log4javascript.Level.ERROR),这将抑制所有优先级较低的日志调用比ERROR)。如果要取消所有日志记录调用,可以在生产代码中放入stub version of log4javascript

  6. 您需要使用window.onerror编写一些代码来执行此操作。像window.onerror = function(msg, file, line) { log.error("Error in " + file + " on line " + line + ": " + msg); }

  7. 这样的东西
  8. 我不确定您希望如何配合Google Analytics。 log4javascript对它没有特别的支持。

答案 1 :(得分:1)

这个想法听起来不错。只要知道你究竟想要记录客户端并拥有它。

我建议使用log4javascript进行日志记录。 log4 api非常直接。

答案 2 :(得分:1)

关于这个问题,从这里开始another question

有些建议是:log4jslog4javascriptBlackbird

FWIW,log4js是那里接受的答案。我没有任何这些平台的经验,所以我不能真正推荐其中一个。