Ist es möglich, die $logProvider.debugEnabled([flag]);
zur Laufzeit zu wechseln?
Die aktuelle Situation:
Der eckige Client lädt Einstellungen vom Server in der Ausführungsphase. Abhängig von den Einstellungen möchte ich die Methode $logProvider.debugEnabled([flag])
einstellen.
Vielen Dank im Voraus, Stevo
Die kurze Antwort dafür lautet: Nein, nicht wirklich.
Sobald Ihre Anwendung über Ihren .config()
-Block konfiguriert wurde, kann keine weitere Konfiguration stattfinden, nachdem die Anwendung bootstrappt wurde.
Dies liegt an der Arbeitsweise der Anbieter. Sie sind nur zur Konfigurationszeit verfügbar. Es kann eine Möglichkeit geben, die Konfiguration zu erzwingen und dann den neuen Dienst $log
manuell in alle Controller einzufügen, aber wenn es einen Weg dafür gibt, bin ich mir nicht sicher, wie.
Ich habe $log.debug(...)
eingerichtet, um den Loglevel zur Laufzeit zu ändern.
Wenn Sie AngularJS Logging mit Decorators verbessern , kam ich auf die Idee für das folgende Code-Snippet:
%Vor% Der Decorator leitet Aufrufe nur an $log.debug
weiter, wenn debugEnabled
in Ihrem lokalen Speicher auf true
gesetzt ist - der Wert kann über den Service ConfigService
geändert werden.
Jetzt können Sie einfach ConfigService#debugEnabled
mit dem Wert aufrufen, den Sie von Ihrem Server geladen haben, um den Loglevel zu ändern.
Dank der letzten vier Zeilen können Sie einfach cfg.debugEnabled(true)
auf Ihrer Konsole aufrufen, um den Debug-Modus zur Laufzeit zu aktivieren.
Wenn Sie nicht in die Konsole tippen möchten, können Sie das globale cfg
vermeiden und JavaScript-Lesezeichen (oder Elemente auf Ihrer Website) verwenden, um die Protokollstufe zu ändern.
Wie ich es gemacht habe, war
bezieht sich in allen Leseorten auf die Service-Variable.
%Vor%Tags und Links angularjs