如何在AngularJS中打开/​​关闭$ log.debug

Eri*_*lfs 77 logging angularjs angularjs-log

我正在尝试使用$ log.debug("Foo").怎么可以打开它.我无法在任何地方找到样品.我认为它需要在配置中设置,但我似乎无法让它工作.

在哪里设置开关?

rga*_*ill 137

$ logProvider.debugEnabled(真)

这仅适用于AngularJs 1.1.2或更高版本.

https://github.com/angular/angular.js/pull/1625

这是一个设置的例子.

var app = angular.module('plunker', []);

app.config(function($logProvider){
  $logProvider.debugEnabled(true);
});

app.controller('MainCtrl', function($scope, $log ) {
  $scope.name = 'World';
  $scope.model = {value: "test"};
  $log.debug('TEST Log');
});
Run Code Online (Sandbox Code Playgroud)

http://plnkr.co/edit/HZCAoS?p=preview

默认情况下它已启用.

  • 那有什么意义呢?我假设,开发人员不仅限于`$ log.debug`.不应该在提供程序中有一个选项,允许禁用所有`$ log`服务输出.或者允许指定要离开的内容.现在这将是有用的.当然,我可以为`$ log`服务编写我自己的服务包装器并从那里处理它......在某种程度上,但是这个选项的重点是什么呢? (9认同)
  • 现在`$ logProvider.debugEnabled(false);`只是禁用`.debug()`方法,启用`.log(),. info()等? (3认同)
  • 你把$ logProvider.debugEnabled(true)放在哪里? (2认同)
  • @Eugene我同意你的想法; 我的猜测也许他们认为开发人员*会将自己限制为$ log.debug,因为那些他们只想在项目的"调试/开发"模式下发生这些消息,并且devs只会使用其他$ log类型的情况他们认为没有关闭它们的真实案例.就像你正在创建一个库一样,将信息,警告和错误消息记录代码放入其中你没有理由压制,因为这些消息是库中包含的逻辑的一部分,以帮助用户正确使用它. (2认同)

Die*_*ego 14

您可以使用装饰器覆盖默认的$ log行为以增强日志级别.这是一个例子:

angular.module('app').config(function($logProvider, $provide){

    $logProvider.debugEnabled(false);

    $provide.decorator('$log', function ($delegate) {
        //Original methods
        var origInfo = $delegate.info;
        var origLog = $delegate.log;

        //Override the default behavior
        $delegate.info = function () {

            if ($logProvider.debugEnabled())
                origInfo.apply(null, arguments)
        };

        //Override the default behavior    
        $delegate.log = function () {

            if ($logProvider.debugEnabled())
                origLog.apply(null, arguments)
        };

        return $delegate;
    });
});
Run Code Online (Sandbox Code Playgroud)

这是受约翰克罗斯比的作品启发,网址http://www.thekuroko.com/using-angulars-log-provider/


小智 12

我遇到了同样的问题,但这不是一个需要通过编码解决的问题,而只是从浏览器控制台启用它

转到浏览器的控制台并将级别设置为详细

  • 我必须这样做才能在Chrome中看到`$ log.debug`消息. (3认同)