J'essaie d'utiliser $ log.debug ("Foo"). Comment peut-il être activé. Je ne trouve aucun échantillon nulle part. Je pense que cela doit être réglé dans la configuration, mais je n'arrive pas à obtenir que cela fonctionne.
Où faut-il placer l'interrupteur marche/arrêt?
$ logProvider.debugEnabled (true)
Ceci est uniquement disponible dans AngularJs 1.1.2 ou version ultérieure.
https://github.com/angular/angular.js/pull/1625
Voici un exemple de réglage.
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
Par défaut, il est activé.
Vous pouvez remplacer le comportement par défaut de $ log par un décorateur pour améliorer le niveau de journalisation. Ceci est un exemple:
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;
});
});
Cela a été inspiré du travail de John Crosby sur http://www.thekuroko.com/using-angulars-log-provider/
J'ai été confronté au même problème mais ce n'est pas un problème à résoudre en codant, mais simplement l'activer depuis la console du navigateur
Accédez à la console du navigateur et définissez le niveau sur verbose
Sur la base de la réponse de Diego, mais en ajoutant un peu de configuration env et en le rendant plus court . Vous pouvez simplement exécuter votre application en utilisant: NODE_ENV=development
ou 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;
});
Comme la solution exige que nous activions l'indicateur Verbose
, le meilleur moyen de gérer la connexion angulaire serait simplement de modifier la fonction native console.log
dans l'environnement de production pour l'ensemble de l'application.
angular.module("myModule")
.config(function(){
//if production environment
console.log = ()=>{};
})
C'est tout. En environnement de production, cela devrait désactiver la journalisation partout. De plus, il n’est pas nécessaire d’injecter $log
dans tous les contrôleurs maintenant . Tout simplement console.log("logging message")
fonctionne!
Vous pouvez également désactiver console.info
, console.warn
, console.error
et console.debug
de la même manière selon vos besoins.