我尝试使用$log.debug(“Foo”)。它怎么能被打开关闭。我到处都找不到样本。我认为它需要在配置中设置,但我似乎也不能让它工作。开关在哪里?
nzkunb0c1#
$logProvider.debugEnabled(true)这仅在AngularJS 1.1.2或更高版本中可用。https://github.com/angular/angular.js/pull/1625这里是一个例子,它被设置。
$logProvider.debugEnabled(true)
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默认情况下,该选项处于启用状态。
ccrfmcuu2#
您可以使用装饰器覆盖默认的$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; }); });
这是从约翰·克罗斯比在http://www.thekuroko.com/using-angulars-log-provider/工作的启发
9w11ddsr3#
我也遇到过同样的问题,但这不是一个问题,要解决的编码,而不是只是使它从浏览器控制台转到浏览器的控制台并将级别设置为详细
ruarlubt4#
既然解决方案要求我们打开Verbose标志,我认为在angular中处理日志记录的最佳方法是在整个应用程序的生产环境中简单地更改原生console.log函数。
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。
$log
console.log("logging message")
console.info
console.warn
console.error
console.debug
fcwjkofz5#
基于迭戈的回应,但增加了一些环境配置,使其更短。您可以简单地使用以下命令运行您的应用:NODE_ENV=development或NODE_ENV=production例如:1. NODE_ENV=development webpack-dev-server例如:2. NODE_ENV=production node app.js
NODE_ENV=development
NODE_ENV=production
NODE_ENV=development webpack-dev-server
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; });
5条答案
按热度按时间nzkunb0c1#
$logProvider.debugEnabled(true)
这仅在AngularJS 1.1.2或更高版本中可用。
https://github.com/angular/angular.js/pull/1625
这里是一个例子,它被设置。
http://plnkr.co/edit/HZCAoS?p=preview
默认情况下,该选项处于启用状态。
ccrfmcuu2#
您可以使用装饰器覆盖默认的$log行为,以提高日志级别。这是一个例子:
这是从约翰·克罗斯比在http://www.thekuroko.com/using-angulars-log-provider/工作的启发
9w11ddsr3#
我也遇到过同样的问题,但这不是一个问题,要解决的编码,而不是只是使它从浏览器控制台
转到浏览器的控制台并将级别设置为详细
ruarlubt4#
既然解决方案要求我们打开
Verbose
标志,我认为在angular中处理日志记录的最佳方法是在整个应用程序的生产环境中简单地更改原生console.log
函数。在生产环境中,这应该会禁用所有地方的日志记录。现在也不需要在每个控制器中注入
$log
。简单的console.log("logging message")
工作!您还可以根据需要以相同的方式禁用
console.info
、console.warn
、console.error
和console.debug
。fcwjkofz5#
基于迭戈的回应,但增加了一些环境配置,使其更短。您可以简单地使用以下命令运行您的应用:
NODE_ENV=development
或NODE_ENV=production
例如:1.
NODE_ENV=development webpack-dev-server
例如:2.
NODE_ENV=production node app.js