如何打开/closuresAngularJS中的$ log.debug
我试图使用$ log.debug(“Foo”)。 它怎么能被closures。 我无法在任何地方find样品。 我认为它需要在configuration中设置,但我似乎无法得到这个工作。
在哪里设置开关?
$ 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
默认是打开的。
您可以使用装饰器覆盖默认的$日志行为以强化日志级别。 这是一个例子:
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; }); });
这是从约翰克罗斯比的工作启发,在http://www.thekuroko.com/using-angulars-log-provider/
我遇到了同样的问题,但这不是编码解决的问题,而是从浏览器控制台启用
转到浏览器的控制台,并设置级别为详细
基于迭戈的回应,但增加了一些环境configuration,并缩短。 你可以简单地运行你的应用程序: NODE_ENV=development
或NODE_ENV=production
[点拨。 NODE_ENV=development webpack-dev-server
EG2。 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; });