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