一个记录到我们后端的JavaScript前端日志记录系统?
我们为服务器端服务建立了一套记录系统。 具体来说,我们的Django项目大量使用了Python日志记录模块,因此我们的集中式日志记录系统会调用对logger.info()
, logger.warn()
和logger.error()
调用。
我想在我们的前端有一个等价物,我有一些想法:
-
会有某种自定义日志记录对象通过JavaScript公开,它会通过XmlHttpRequest将消息发送到后端。
-
我想在客户端具有等效的日志记录级别:
debug
,info
,warning
和error
。 -
当我们在本地开发(调试模式)时,我希望通过
console.log()
将这些日志消息记录到浏览器/ Firebug控制台。 -
在生产中,应该完全删除
debug
消息。 -
我记得有一种方法可以捕获所有未捕获的JavaScriptexception,因此应该在
error
级别记录这些exception。 -
我们已经在使用谷歌分析事件跟踪了 ,对于我们创建的任何系统而言,它都会很好地与之结合。
这是一个好主意吗? 你会怎么做? 有现成的解决方案吗?
(FWIW,我们在前端使用jQuery。)
更新:简化问题: https : //stackoverflow.com/questions/1423267/are-there-any-logging-frameworks-for-javascript
首先,我编写并维护了log4javascript ,所以我预先宣布了我的兴趣。 我每天都在工作中使用它,所以我作为用户有一些经验。 以下是我将如何处理您的问题,特别是与log4javascript相关的问题:
-
使用log4javascript的
AjaxAppender
进行服务器日志记录; -
debug
,info
,warning
和error
,以及trace
和fatal
; -
使用
BrowserConsoleAppender
登录FireBug或本机浏览器控制台; -
如果您不想从生产代码中删除所有调试日志记录调用,则可以调整记录器的阈值(例如,使用
log.setLevel(log4javascript.Level.ERROR)
,这将禁止优先级低于ERROR
)。 如果要禁止所有日志记录调用,可以在生产代码中插入log4javascript的存根版本 。 -
您需要使用
window.onerror
编写一些代码来执行此操作。 像window.onerror = function(msg, file, line) { log.error("Error in " + file + " on line " + line + ": " + msg); }
window.onerror = function(msg, file, line) { log.error("Error in " + file + " on line " + line + ": " + msg); }
-
我不确定您希望如何配合Google Analytics。 log4javascript对它没有特别的支持。
这个想法听起来不错。 只要知道你究竟想要记录客户端并拥有它。
我建议使用log4javascript进行日志记录。 log4 api非常直接。
这是关于这个问题的另一个问题。
一些建议是: log4js , log4javascript和Blackbird 。
FWIW,log4js是那里接受的答案。 我没有任何这些平台的经验,所以我不能真正推荐其中一个。