我正在尝试使用$ log.debug(“ Foo”)。如何将其关闭。我在任何地方都找不到样品。我认为它需要在配置中设置,但我似乎也无法使其正常工作。
哪里设置开关?
我正在尝试使用$ log.debug(“ Foo”)。如何将其关闭。我在任何地方都找不到样品。我认为它需要在配置中设置,但我似乎也无法使其正常工作。
哪里设置开关?
Answers:
$ logProvider.debugEnabled(true)
仅在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
默认情况下它是打开的。
$logProvider.debugEnabled(false);
仅禁用该.debug()
方法,保持.log(), .info(), etc
启用状态?
$log.debug
。提供程序中不应有一个选项,该选项将允许禁用所有$log
服务输出。或者允许指定要离开的东西。现在,这将很有用。当然,我可以为$log
服务编写自己的服务包装并从那里处理它。.但是,此选项又有什么意义呢?
您可以使用装饰器覆盖默认的$ 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;
});
});
这是从约翰·克罗斯比(John Crosby)在http://www.thekuroko.com/using-angulars-log-provider/
我也遇到过同样的问题,但是这不是要通过编码解决的问题,而只是从浏览器控制台启用它
转到浏览器的控制台并将级别设置为详细
$log.debug
在Chrome中查看消息。
基于Diego的响应,但添加了一些env配置并使其更短。您可以通过简单地运行你的应用程序:NODE_ENV=development
或NODE_ENV=production
例如1。 NODE_ENV=development webpack-dev-server
例如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;
});
好吧,由于该解决方案要求我们打开Verbose
标志,因此我认为处理角度登录的最佳方法是简单地console.log
为整个应用程序更改生产环境中的本机功能。
angular.module("myModule")
.config(function(){
//if production environment
console.log = ()=>{};
})
而已。在生产环境中,这应禁用所有地方的日志记录。另外,现在无需注入$log
每个控制器。简单地console.log("logging message")
工作!
您还可以禁用console.info
,console.warn
,console.error
并console.debug
以同样的方式,按您的需要。