javascript 如何在生产环境中禁用console.log()并显示横幅?

icnyk63a  于 2022-12-10  发布在  Java
关注(0)|答案(6)|浏览(154)

有人能告诉我们如何在生产中禁用console.log()吗?我已经看到了以下成就:

jxct1oxe

jxct1oxe1#

你在使用某种模块捆绑器吗?在webpack中你可以选择drop_console。drop_console所做的就是从你的代码中删除所有console.log语句。还有npm模块也是一样的,请看一下。https://www.npmjs.com/package/babel-plugin-transform-remove-console这是一个babel插件,如果你有babel安装程序,你可以使用它。
如果所有这些都不能满足您的要求,您可以简单地覆盖console.log语句,或者按照其他答案的建议使用自定义日志记录器。

voj3qocg

voj3qocg2#

var DEBUG = false;
if(!DEBUG){
  if(!window.console) window.console = {};
  var methods = ["log", "debug", "warn", "info"];
  for(var i=0;i<methods.length;i++){
      console[methods[i]] = function(){};
 }
}
xwbd5t1u

xwbd5t1u3#

方法1:您可以将console.log保存到您自己的函数中并删除原始函数。

类似于:

writeConsoleLog = console.log; //save the log function in your own function
console.log = function(){} //override the original log function
console.log("Text"); //does nothing
writeConsoleLog("Text"); //mimics the console.log() and writes to the console

**方法2:**您可以先console.log任何需要的内容,然后删除log函数,如下所示

console.log("The content you want to print"); //will write to the console
console.log = function(){} //override the log function
console.log("Text"); //now it does nothing
ldxq2e6h

ldxq2e6h4#

你可以用其他自定义函数替换代码中的所有console.log(...)来显示你想要的日志信息,例如在DIV元素中。但是如果你真的想覆盖console.log函数,你可以简单地像下面这样做(通常不推荐):
第一个

kse8i1jr

kse8i1jr5#

可以通过此示例启用和禁用!

console.log("Before disabled logs");

const showLogs = false

if( !showLogs ) {
  console.log = function() {} 
}

console.log("After disabled logs #1");
console.log("After disabled logs #2");
vdgimpew

vdgimpew6#

与Dodo的回答类似,我创建了一个简单的日志记录方案,它允许我基于主机(限制生产中的输出)和一个查询参数来控制日志记录级别。

(() => {
    const pageURL = new URL(location.href);
    const prodMode = pageURL.host == 'oomdraw.com';
    const logLevels = ['Debug', 'Info', 'Warn', 'Error'];
    const logLevel = pageURL.searchParams.get('ll') || (prodMode ? 'Error' :  'Debug');

    const ml = logLevels.indexOf(logLevel);

    for (let i = 0; i < logLevels.length; i++) {
        window[`log${logLevels[i]}`] = i >= ml ? console[logLevels[i].toLowerCase()] : () => {};
    }
    
    logDebug('debug messages enabled');
    logInfo('info messages enabled');
    logWarn('warn messages enabled');
    logError('error messages enabled');
})();

相关问题