簡體   English   中英

Angular的$ log.debug()沒有顯示在Chrome的控制台上

[英]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.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM