![](/img/trans.png)
[英]Console.log messages not showing up in Chrome's javascript console?
[英]Angular's $log.debug() not showing on Chrome's console
最近,我的Chrome瀏覽器停止在控制台上顯示$log.debug()
消息。 我一直在使用這種方式在我的所有控制器上使用angular而不是console.log()
進行日志記錄,因為當我將腳本上傳到生產服務器時很容易禁用日志記錄。
我已經檢查了我的$logProvider
配置,並且debugEnabled()
設置為true
。
出於某種原因,在chrome上顯示$log.debug()
消息的唯一方法是在控制台過濾器上啟用verbose
消息。 直到最近,這是沒有必要的。 啟用詳細信息並不好,因為控制台會發出很多其他我不關心的消息。
我目前在Windows 7計算機上使用Chrome v60.0.3112.101 64位。 它與瀏覽器的版本有關嗎? 我可以做些什么來讓它在沒有詳細模式的情況下再次顯示消息嗎?
Ps。:Firefox繼續一如既往地展示一切。
console.debug
日志級別在Chrome / Chromium版本之間不一致。 Chrome 58中的控制台UI已更改。 目前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;
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.