log angularjs logging angularjs-log

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/