Pregunta Cómo activar / desactivar $ log.debug en AngularJS


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?


73
2018-03-22 02:44


origen


Respuestas:


$ 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.


134
2018-03-23 01:08



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/


13
2017-09-10 16:23



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


8
2018-06-28 15:24



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

E.g.1. NODE_ENV=development webpack-dev-server

E.g.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;
});

1
2018-02-17 06:23



Bueno, dado que la solución requiere que enciendamos Verbose bandera, creo que la mejor manera de manejar el registro en angular sería simplemente alterar el nativo console.log función en el entorno de producción 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") ¡trabajos!

También puedes deshabilitar console.info, console.warn, console.error y console.debug de la misma manera según su necesidad.


0
2018-02-08 12:03