2014-11-20 54 views
1

有没有办法让我在我的开发过程中在javascript/jquery代码中输出日志信息,这样我就可以在chrome/firefox中看到日志消息,然后在生产中我在我的javascript上运行一些工具来缩小它,并删除这些日志记录。是否可以在chrome中输出日志/跟踪,并删除生产?

目前有什么可以做我想要的吗?

我知道日志记录根据您使用的浏览器而不同,是否有某种记录插件可用于Chrome和Firefox?

+0

http://stackoverflow.com/questions/20092466/can-uglify-js-remove-the-console-log-statements – 2014-11-20 20:27:17

+0

什么操作系统? IBM System/360或Linux? – 2014-11-20 20:39:25

+0

我正在使用osx,不知道为什么这很重要? – Blankman 2014-11-20 20:40:34

回答

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'); 

消息将只在开发模式下记录。

希望这有帮助,让我知道。

干杯!

0

一个简单的建议,你可以覆盖作为生产的空功能的console.log()方法的方法。 This answer here更详细地回顾它。

0

这就是我所做的。你必须定义一个变量,表明你在开发中,而不是在生产中。使用预处理器语言(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__

JSFiddle Example

相关问题