2017-04-27 70 views
5

在我們的Angular應用程序(使用Angular CLI製作)中,我們使用了幾個console語句。有沒有全球性的方法來檢測環境,然後在我們的組件和服務中僅顯示console.log僅在開發環境中使用角控制檯日誌

我的意思全球的方式 - 我知道我們可以使用類似:

if (!environment.production) { 
    console.log(this.reviewTasksList); 
} 

但是,通過使用此代碼每次我們必須console.log(以及必要的進口,以獲得environment變量)我們的代碼將成爲種類繁多。

我想知道是否有一種方法也許:

  • 訪問以更快的方式對環境
  • 也許刪除在督促構建時

或者更好的控制檯的所有日誌這裏的解決方案是創建一個記錄器服務並在其中進行所有環境檢查?

我不希望我的包大小受調試語句和服務的影響。

回答

2

您可以使用isDevMode()environment.production來檢查代碼是以開發模式還是生產模式運行。

我認爲記錄器服務將是一個好主意,然後根據模式在提供程序中註冊不同的記錄器服務。

又見https://github.com/angular/angular/pull/14308

+1

不錯,Angular團隊正在考慮這個問題。 – BlackHoleGalaxy

2

或者您可以使用一個共同的服務來實現這個

this.loggerService.log(this.reviewTasksList); 

地方在你的服務,你可以使用

log(text: string){ 
    if (!environment.production) { 
     console.log(text) 
    } 
} 
1

如果重寫什麼的console.log如果它不在開發模式?

if (! isDevMode()){ 
    console.log = (...args)=>{} 
} 
0

這將覆蓋所有具有空白功能的控制檯日誌。

if (environment.production) { 
    enableProdMode(); 
    window.console.log = function() { }; // disable any console.log debugging statements in production mode 
    // window.console.error = function() { }; 

} 
相關問題