2017-08-15 57 views
4

最近,我的Chrome瀏覽器停止在控制檯上顯示$log.debug()消息。我一直在使用這種角度記錄方式,而不是使用console.log(),因爲當我將腳本上傳到生產服務器時,很容易禁用日誌記錄。

我已經檢查過我的$logProvider配置,而debugEnabled()設置爲true

由於某種原因,在Chrome上顯示$log.debug()消息的唯一方法是在控制檯過濾器上啓用verbose消息。直到最近,這是沒有必要的。啓用詳細信息並不好,因爲控制檯吐出了許多我不關心的其他消息。

我目前在Windows 7機器上使用64位的Chrome v60.0.3112.101。它與瀏覽器版本有關嗎?我可以做些什麼來讓它在沒有詳細模式的情況下再次顯示消息嗎?

Ps .: Firefox繼續顯示所有內容。

回答

5

console.debug日誌級別在Chrome/Chromium版本之間不一致。控制檯用戶界面已在Chrome 58中更改。目前console.debug要求詳細級別。

如果其他控制檯的條目在此日誌級別不需要,控制檯設置可改爲用戶消息只

console.debug

如果這種行爲應特定頁面內改變,console可以修補:

console.debug = console.log; 

考慮到AngularJS $log服務是一種抽象了console,和$log.debug製成依賴debugEnabled狀態從$log.log區分,這可以被固定在不太顯眼的方式在AngularJS應用:

app 
.config(['$provide', '$logProvider', ($provide, $logProvider) => { 
    // expose a provider to reach debugEnabled in $log 
    $provide.value('$logProvider', $logProvider); 
}) 
.decorator('$log', ['$logProvider', '$delegate', ($logProvider, $delegate) => { 
    // override $log.debug 
    $delegate.debug = function() { 
    if (!$logProvider.debugEnabled()) 
     return; 
    $delegate.log.apply($delegate, arguments); 
    }); 

    return $delegate; 
}); 
+0

我還沒有嘗試過該裝飾選項,所測試的「用戶僅messagens」並按預期工作。謝謝! –

+0

不客氣。 '僅限用戶消息'將刪除所有其他具有較高日誌等級但不是來自'控制檯'調用的條目(例如失敗的請求)。這可能是不可取的。 – estus

+0

裝飾器代碼不適合我,但只是瞭解Chrome如何隱藏日誌真的有幫助! – inorganik