2014-11-20 25 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

相關問題