Ich versuche $ log.debug ("Foo") zu verwenden. Wie kann es ausgeschaltet werden? Ich kann nirgendwo eine Probe finden. Ich denke, es muss in der Konfiguration eingestellt werden, aber ich kann das auch nicht zum Laufen bringen.
Wo setzt man den Ein- und Ausschalter?
angularjs
logging
angularjs-log
Eric Rohlfs
quelle
quelle
$logProvider.debugEnabled(false);
Deaktiviert man nun einfach die.debug()
Methode und lässt sie.log(), .info(), etc
aktiviert?$log.debug
. Sollte es im Anbieter keine Option geben, kann die gesamte$log
Dienstausgabe deaktiviert werden. Oder erlauben Sie anzugeben, was verlassen werden soll. Das wäre nützlich. Sicher, ich könnte meinen eigenen Service-Wrapper für den$log
Service schreiben und von dort aus damit umgehen ... irgendwie, aber was ist dann wieder der Sinn dieser Option?Sie können das Standardverhalten von $ log mit einem Dekorateur überschreiben, um die Protokollstufe zu verbessern. Dies ist ein Beispiel:
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; }); });
Dies wurde von der Arbeit von John Crosby unter http://www.thekuroko.com/using-angulars-log-provider/ inspiriert.
quelle
Ich habe das gleiche Problem, aber es ist kein Problem, das durch Codierung gelöst werden muss, sondern nur über die Browserkonsole aktiviert wird
Gehen Sie zur Konsole des Browsers und stellen Sie die Ebene auf ausführlich ein
quelle
$log.debug
Nachrichten in Chrome zu sehen.Basierend auf der Antwort von Diego, aber Hinzufügen einer Env-Konfiguration und Verkürzung. Sie können Ihre App einfach ausführen mit:
NODE_ENV=development
oderNODE_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; });
quelle
Nun, da die Lösung erfordert, dass wir das
Verbose
Flag aktivieren, besteht der beste Weg, die Protokollierung im Winkel zu handhaben, darin, einfach die nativeconsole.log
Funktion in der Produktionsumgebung für die gesamte Anwendung zu ändern .angular.module("myModule") .config(function(){ //if production environment console.log = ()=>{}; })
Das ist es. In der Produktionsumgebung sollte dies die Protokollierung überall deaktivieren. Außerdem muss
$log
jetzt nicht mehr in jeden Controller injiziert werden. Funktioniert einfachconsole.log("logging message")
!Sie können auch deaktivieren
console.info
,console.warn
,console.error
und aufconsole.debug
die gleiche Weise wie pro Ihre Notwendigkeit.quelle