2012-08-25 132 views
2

我在我的JS文件中使用console.log來跟蹤應用程序。Javascript:控制檯日誌記錄

問題:日誌處於生產環境中。
如何從代碼中刪除像console.log這樣的行?

P.S.請不要建議像find + xargs + grep -v這樣的文本解決方案。

+2

您想從代碼中刪除行,或者您不希望打印控制檯輸出? – cheeken

+0

請注意,還有其他方法(例如'console.dir')。 –

+0

我認爲,最好從代碼中移除這些行。 – DmitryR

回答

3

好了,你可以用

console.log=function(){} 

禁用它們可是電話將在那裏unsless你手動刪除它們。

+2

_Uncaught TypeError:對象#的屬性'log'不是函數_也許'console.log = function(){};'而是... – canon

+1

是的,我在發佈我的答案後意識到它。看到我編輯過的帖子 – Oriol

4

對於我的重要項目,我有我自己的日誌記錄功能,在內部使用console.log(),但在我的代碼中沒有console.log()調用,除了此函數中的一個地方。然後我可以通過更改一個變量來啓用或禁用日誌記錄。

我的函數實際上是比這與選擇一個涉及多一點,以輸出放到不僅僅是控制檯等地,但在概念上,它看起來像這樣:

// change this variable to false to globally turn off all logging 
var myLoggingEnabled = true; 

function myLog() { 
    if (myLoggingEnabled) { 
     if (window.console && console.log) { 
      console.log.apply(this, arguments); 
     } 
    } 
} 

然後,您可以使用這樣的代碼登錄:

myLog(foo); 

僅供參考,對部署的代碼緊湊性和性能優化,我也有一個最小化步驟可以消除我的代碼myLog()所有呼叫。這是我選擇利用的優化。也許你可以分享爲什麼你不會考慮這種類型的優化。

2

如果您使用Grunt,則可以添加一個任務以刪除/註釋console.log語句。 因此不再調用console.log。

https://www.npmjs.org/package/grunt-remove-logging-calls

+0

我選擇了這個模塊(例如'grunt-remove-logging-calls')來替代'grunt-remove-logging',因爲後者在替換更復雜的控制檯表達式時產生了問題 –

0

是啊,我也有類似的情況,我貼一下這裏。 http://bhavinsurela.com/naive-way-of-overriding-console-log/ 這是代碼的要點。

var domainNames =["fiddle.jshell.net"]; // we replace this by our production domain. 

var logger = { 
    force:false, 
    original:null, 
    log:function(obj) 
    { 
     var hostName = window.location.hostname; 
     if(domainNames.indexOf(hostName) > -1) 
     { 
      if(window.myLogger.force === true) 
      { 
       window.myLogger.original.apply(this,arguments); 
      } 
     }else { 
      window.myLogger.original.apply(this,arguments); 
     } 
    }, 
    forceLogging:function(force){ 
     window.myLogger.force = force; 
    }, 
    original:function(){ 
     return window.myLogger.original; 
    }, 
    init:function(){ 
     window.myLogger.original = console.log; 
     console.log = window.myLogger.log; 
    } 
} 

window.myLogger = logger; 
console.log("this should print like normal"); 
window.myLogger.init(); 
console.log("this should not print"); 
window.myLogger.forceLogging(true); 
console.log("this should print now"); 
相關問題