2017-08-15 11 views
4

最近、Chromeブラウザで、コンソールにメッセージ$log.debug()が表示されなくなりました。私はプロダクションサーバーにスクリプトをアップロードするときにログを無効にするのは簡単だから、私のすべてのコントローラでconsole.log()の代わりにこのような角度のログを使用しています。

私はすでに$logProviderの設定をチェックしており、debugEnabled()trueに設定されています。

何らかの理由で$log.debug()メッセージをクロムに表示する唯一の方法は、コンソールフィルタでverboseメッセージを有効にすることです。最近までそれは必要ではなかった。コンソールが私が気にしない他のたくさんのメッセージを吐き出すので、冗長を有効にするのはうれしいことではありません。

現在、Windows 7マシンでChrome v60.0.3112.101 64ビットを使用しています。それはブラウザのバージョンに関連していますか?冗長モードなしでメッセージを再び表示させるために何かできますか?

ps:Firefoxは常にすべてを表示し続けます。

答えて

5

console.debugログレベルはChrome/Chromiumバージョン間で矛盾しています。コンソールUIがChrome 58に変更されました。現在、console.debugは、詳細レベルを必要とします。この動作は、特定のページ内で変更する必要がある場合は、

console.debug

consoleは、パッチを適用することができます。他のコンソールエントリはこのログレベルでは、不要であれば

は、コンソール設定は、ユーザーのメッセージのみに変更することができます:

console.debug = console.log; 

はAngularJS $logサービスが以上の抽象化であることを考慮すると、 「唯一のユーザーmessagens」テスト済み、

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

私はデコレータのオプションを試していない:、及び$log.debug$log.logからそれを区別するためにdebugEnabled状態に依存してなされたもので、これはAngularJSアプリケーションで目立たない方法で固定することができます。期待通りに働いた。ありがとう! –

+0

ようこそ。 'User messages only'は、より高いログレベルを持ちますが、 'console'呼び出し(例えば失敗したリクエスト)の結果ではない他のすべてのエントリを削除します。これは望ましくない可能性があります。 – estus

+0

デコレータコードは私のためには機能しませんでしたが、Chromeがログをどのように隠すかを知るだけで本当に助けになりました! – inorganik

関連する問題