2016-06-08 16 views
3

Wir haben eine angularjs-Anwendung, für die wir alle Fehler oder irgendwelche Informationen zu Server (in Datei schreiben) protokollieren möchten. Viele Vorschläge verweisen auf winston.js. Aber ich bin nicht sicher, wie man die winston.js mit der angularjs Anwendung benutzt.Verwendung winston.js in angularjs Anwendung

Jede Hilfe/Anregung wäre großartig.

Antwort

3

Für eine AngularJS-Anwendung wäre die beste Lösung, einen Decorator für den Standard-$ log-Dienst zu erstellen, der dann den serverseitigen Logger umschließt.

Dieser Ansatz funktioniert, wenn Sie sich entscheiden, Winston nicht zu verwenden, einen anderen Remote Logger zu verwenden oder einen eigenen zu schreiben. Indem Sie den Decorator verwenden, entfernen Sie die Auswirkungen aus Ihrem Code, da Sie in Ihrer Anwendung weiterhin den Standarddienst $log verwenden.

Denn um ehrlich zu sein, Winston sieht aus wie ein Nodejs Logger - ich bin mir nicht sicher, ob es im Browser funktioniert.

Wert Anbieter für winston

var winston = require('winston'); 
app.value('winston', winston); 

Ihre Dekorateur hinzufügen Dann erstellen

logDecorator.$inject = ['$provide']; 
function logDecorator($provide) { 

    $provide.decorator('$log', ['$delegate', 'winston', function($delegate, winston) { 

     var origLog = $delegate.log; 
     var origDebug = $delegate.debug; 
     var origError = $delegate.error; 
     // ... 

     $delegate.log = function() { 
      winston.log(arguments); 
      origLog.apply(null, arguments); 
     } 

     $delegate.debug = function() { 
      winston.debug(arguments); 
      origDebug.apply(null, arguments); 
     } 

     $delegate.error = function() { 
      winston.error(arguments); 
      origError.apply(null, arguments); 
     } 
    }] 
} 

app.config(logDecorator); 

Sie können sehen, wo dieser Code geht. Sie können wahrscheinlich eine viel sauberere Implementierung haben, die nur durch ein Array von Zeichenfolgenarrays von Protokollstufen hindurchläuft, um die Delegiertenmethoden zu erzeugen.

Jetzt loggen Sie Ihre Nachrichten wie gewohnt in $ log und sie werden an winston weitergeleitet. Darüber hinaus werden alle kantigen oder 3rd-Party-Modul Fehler protokolliert.