是否可以在chrome中输出日志/跟踪,并删除以进行生产?

时间:2014-11-20 20:19:17

标签: javascript jquery

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

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

我知道日志记录根据您使用的浏览器而有所不同,是否有适用于chrome和firefox的日志插件?

3 个答案:

答案 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__

JSFiddle Example