Cómo activar/desactivar $ log.debug en AngularJS
angular 4 console log (5)
$ logProvider.debugEnabled (true)
Esto solo está disponible en AngularJs 1.1.2 o posterior.
https://github.com/angular/angular.js/pull/1625
Aquí hay un ejemplo de cómo se establece.
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
Por defecto está activado.
Estoy tratando de usar $ log.debug ("Foo"). ¿Cómo se puede apagar? No puedo encontrar una muestra en ningún lado. Creo que debe establecerse en la configuración, pero tampoco puedo hacer que funcione.
¿Dónde se establece el interruptor de encendido y apagado?
Basado en la respuesta de Diego pero agregando algunas configuraciones env y haciéndolas más cortas. Simplemente puede ejecutar su aplicación usando: NODE_ENV=development
o NODE_ENV=production
Eg1. 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;
});
Bueno, dado que la solución requiere que Verbose
indicador Verbose
, creo que la mejor manera de manejar el registro en angular sería simplemente modificar la función nativa console.log
en Production Environment para toda la aplicación.
angular.module("myModule")
.config(function(){
//if production environment
console.log = ()=>{};
})
Eso es. En el entorno de producción, esto debería deshabilitar el inicio de sesión en todas partes. Además, no hay necesidad de inyectar $log
en cada controlador ahora. Simplemente console.log("logging message")
funciona!
También puede deshabilitar console.info
, console.warn
, console.error
y console.debug
la misma manera que lo necesite.
Me he enfrentado al mismo problema, pero no es un problema para ser resuelto mediante la codificación, sino que simplemente lo habilito desde la consola del navegador.
Vaya a la consola del navegador y configure el nivel a detallado
Puede anular el comportamiento $ log predeterminado con un decorador para mejorar el nivel de registro. Esto es un ejemplo:
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;
});
});
Esto se inspiró en el trabajo de John Crosby en http://www.thekuroko.com/using-angulars-log-provider/