javascript – Angular的$log.debug()没有显示在Chrome的控制台上

最近,我的Chrome浏览器停止在控制台上显示$log.debug()消息.我一直在使用这种方式在我的所有控制器上使用angular而不是console.log()进行日志记录,因为当我将脚本上传到生产服务器时很容易禁用日志记录.

我已经检查了我的$logProvider配置,并且debugEnabled()设置为true.

出于某种原因,在chrome上显示$log.debug()消息的唯一方法是在控制台过滤器上启用详细消息.直到最近,没有必要.启用详细信息并不好,因为控制台会发出许多我不关心的其他消息.

我目前在Windows 7计算机上使用的是64位Chrome v60.0.3112.101.它与浏览器的版本有关吗?我可以做些什么来让它在没有详细模式的情况下再次显示消息吗?

Ps.:Firefox继续一如既往地展示一切.

解决方法

console.debug日志级别在Chrome / Chromium版本之间不一致.控制台UI在 Chrome 58中已更改.目前console.debug需要详细级别.

如果此日志级别不需要其他控制台条目,则控制台设置可以更改为仅用户消息:

如果应在特定页面中更改此行为,则可以修补控制台:

console.debug = console.log;

考虑到AngularJS $log服务是对控制台的抽象,并且$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;
});

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...