有没有办法让我在我的开发过程中在javascript/jquery代码中输出日志信息,这样我就可以在chrome/firefox中看到日志消息,然后在生产中我在我的javascript上运行一些工具来缩小它,并删除这些日志记录。是否可以在chrome中输出日志/跟踪,并删除生产?
目前有什么可以做我想要的吗?
我知道日志记录根据您使用的浏览器而不同,是否有某种记录插件可用于Chrome和Firefox?
有没有办法让我在我的开发过程中在javascript/jquery代码中输出日志信息,这样我就可以在chrome/firefox中看到日志消息,然后在生产中我在我的javascript上运行一些工具来缩小它,并删除这些日志记录。是否可以在chrome中输出日志/跟踪,并删除生产?
目前有什么可以做我想要的吗?
我知道日志记录根据您使用的浏览器而不同,是否有某种记录插件可用于Chrome和Firefox?
那么这取决于你的开发环境。我通常会声明一个全局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');
消息将只在开发模式下记录。
希望这有帮助,让我知道。
干杯!
一个简单的建议,你可以覆盖作为生产的空功能的console.log()方法的方法。 This answer here更详细地回顾它。
这就是我所做的。你必须定义一个变量,表明你在开发中,而不是在生产中。使用预处理器语言(PHP ..等)将其输出到HTML中。一些旧的IE浏览器没有控制台对象。
您在计算如何定义__DEV__
时有选项如果您的生产域名不等于您的生产域名,或者您可以在服务器端输出JavaScript代码,您可以使用JavaScript检查主机名并定义__DEV__
一些环境变量。
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__
。
http://stackoverflow.com/questions/20092466/can-uglify-js-remove-the-console-log-statements – 2014-11-20 20:27:17
什么操作系统? IBM System/360或Linux? – 2014-11-20 20:39:25
我正在使用osx,不知道为什么这很重要? – Blankman 2014-11-20 20:40:34