我有没有办法在我的开发过程中在我的javascript / jquery代码中输出日志信息,所以我可以在chrome / firefox中看到日志消息,然后在生产中我在我的javascript上运行一些工具来缩小它删除这些日志记录语句。
目前有什么东西可以做我想要的吗?
我知道日志记录根据您使用的浏览器而有所不同,是否有适用于chrome和firefox的日志插件?
答案 0 :(得分:1)
这很大程度上取决于您的开发环境。我通常声明一个全局ENV变量,我在其中存储应用程序状态。 您可以创建一个新模块登录,您将检查ENV是否正在开发。如果是这种情况,那么您将调用console.log()或您更喜欢的日志记录需求。如果ENV var告诉浏览器应用程序处于生产模式而不是Log模块,则不执行任何操作。
这样的事情:
(function (window, env){
'use strict';
var logger = {
log: function(what) {
if (env !== 'production') {
console.log(what);
}
}
}
window.myLogger = logger;
}(window, ENV));
当你打电话时:
myLogger.log('Hello, I am a logger');
该消息仅以开发模式记录。
希望这有帮助,请告诉我。
干杯!
答案 1 :(得分:0)
一个简单的建议,您可以将 console.log()方法覆盖为生产的空函数。 This answer here更详细地介绍了它。
答案 2 :(得分:0)
这就是我的工作。您必须定义一个变量,指示您正在开发中,而不是在生产中。使用预处理器语言(PHP ..等)输出到HTML。一些旧的IE浏览器没有控制台对象。
在确定如何定义__DEV__
时可以选择您可以使用JavaScript检查主机名,如果它不等于您的生产域名,则定义__DEV__
,或者您可以输出检查一些环境变量后,服务器端的JavaScript代码。
if(typeof window.console === 'undefined') {
window.console = {
log: function() {}
// etc, define all the methods for which you will call
// while developing.. warn, debug..
}
}
var CONSOLE = window.console.log; // get a reference to the function
window.console.log = function() {
if(typeof window.__DEV__ != 'undefined') {
return CONSOLE.apply(this, arguments);
}
}
这比写一些内容以删除代码中的所有console.*
调用更有效。您不希望必须习惯新的调用构造,例如logger.log
,因为这会浪费时间。这样,您仍然可以使用常规日志记录约定,但它不会在生产环境中输出。
如果找不到__DEV__
,则不会记录。默认情况下,它不会记录。您需要在HTML文档的顶部定义__DEV__
。