2017-08-15 61 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