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

时间:2013-03-22 02:44:33

标签: angularjs logging angularjs-log

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

在哪里设置开关?

4 个答案:

答案 0 :(得分:136)

$ 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');
});

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

默认情况下,它已启用。

答案 1 :(得分:10)

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

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

答案 2 :(得分:1)

根据Diego的回复,但添加一些env配置并缩短它。 您只需使用NODE_ENV=developmentNODE_ENV=production

运行您的应用即可

E.g.1。 NODE_ENV=development webpack-dev-server

E.g.2。 NODE_ENV=production node app.js

$logProvider.debugEnabled(process.env.NODE_ENV === 'development');
$provide.decorator('$log', function($delegate) {
    $delegate.info = $logProvider.debugEnabled() ? $delegate.info : function() {};
    $delegate.log = $logProvider.debugEnabled() ? $delegate.log : function() {};
    return $delegate;
});

答案 3 :(得分:0)

好吧,既然解决方案要求我们打开Verbose标志,我认为处理angular中的登录的最佳方法是简单地改变整个应用程序的生产环境中的本地console.log函数

angular.module("myModule")
.config(function(){
    //if production environment
    console.log = ()=>{};
})

那就是它。在生产环境中,这应该禁用各处的日志记录。此外,现在无需在每个控制器中注入$log。 只需console.log("logging message")就可以了!

您也可以根据需要同样停用console.infoconsole.warnconsole.errorconsole.debug