Suche…


Grundlegende serverseitige Protokollierung

Der erste Schritt zur Protokollierung besteht darin, Meteor von der Shell aus auszuführen, und die Serverprotokolle werden in der Befehlskonsole abgerufen.

meteor

Der nächste Schritt besteht darin, den Inhalt von std_out und std_err wie folgt in eine Protokolldatei zu leiten:

meteor > my_app_log.log 2> my_app_err.log

Tools zur clientseitigen Protokollierung

Sobald Sie sich auf der Serverseite angemeldet haben, können Sie zur Clientseite wechseln. Wenn Sie die Konsolen-API noch nicht erforscht haben, bereiten Sie sich auf eine Belohnung vor. Mit der integrierten Console-API, die in jeder Chrome- und Safari-Installation enthalten ist, können Sie alle möglichen Dinge tun. So sehr, dass Sie Winston oder andere Protokollierungs-Frameworks möglicherweise nicht benötigen.

Als Erstes sollten Sie clientseitige Protokollierungs- und Entwicklertools installieren. Chrome und Safari werden mitgeliefert, Firefox erfordert jedoch die Firebug-Erweiterung.

Firebug-Erweiterung

Dann sollten Sie sich die Dokumentation zur Console API ansehen. Die folgenden zwei Dokumente sind von unschätzbarem Wert für die Protokollierung der Lernkonsolen.

Chrome-Entwicklertools

Firebug (Client)

Erweiterte Serverprotokollierungstools

Nachdem Sie sowohl die serverseitige Protokollierung als auch die clientseitigen Entwicklungstools ausgeführt haben, können Sie sich die Meteor-spezifischen Erweiterungen wie die Meteor Chrome DevTools-Erweiterung anschauen. So können Sie tatsächlich die Serverprotokollierung im Client beobachten! Weil die Datenbank überall ist. Da ist die Protokollierung.

Chrome DevTools Extension (Server)

Protokollierungsfehler bei Datenbankklappe

Das folgende Beispiel reicht von 0,5 bis 0,7 Tagen und veranschaulicht, wie ein Fehler protokolliert wird, wenn die Datenbank den clientseitigen Cursor noch nicht gefüllt hat.

Template.landingPage.postsList = function(){
  try{
    return Posts.find();
  }catch(error){
    //color code the error (red)
    console.error(error);
  }
}

Protokollierung von Informationen zum Datenkontext in einem Vorlagenhelfer

Im Folgenden wird die Chrome-Protokollierungs-API verwendet. Wenn die .group() in mehreren Vorlagen verwendet wird, werden die Konsolenprotokolle aus verschiedenen Vorlagen grafisch in einer hierarchischen .group() organisiert.

Sie können auch sehen, wie Sie den aktuellen Datenkontext untersuchen und wie Sie Daten in einer Reihe festlegen.

Template.landingPage.getId = function(){
  // using a group block to illustrate function scoping
  console.group('coolFunction');

  // inspect the current data object that landingPage is using
  console.log(this);

  // inspect a specific field of the locally scoped data object
  console.log(JSON.stringify(this._id);

  // close the function scope
  console.groupEnd();
  return this._id;
}

Protokollierung von Ereignissen und Benutzerinteraktionen

Ein einfaches Beispiel für die Verwendung der Chrome-Protokollierungs-API.

Template.landingPage.events({
  'click .selectItemButton':function(){
    // color code and count the user interaction (blue)
    console.count('click .selectItemButton');
  }
});

Protokollierung mit Variablen auf Protokollebene

Die Protokollierung kann die Konsole oft unübersichtlich machen. Daher ist es üblich, Protokollebenen festzulegen, um zu steuern, welche Details der Daten protokolliert werden. Ein übliches Muster ist das Angeben von Variablen auf Protokollebene.

var DEBUG = false;
var TRACE = false;
Template.landingPage.events({
  'click .selectItemButton':function(){
    TRACE && console.count('click .selectItemButton');

    Meteor.call('niftyAction', function(errorMessage, result){
        if(errorMessage){
            DEBUG && console.error(errorMessage);    
        }
    });
  }
});

Deaktivieren Sie die Protokollierung in der Produktion

Einige Teams möchten, dass sie Konsolenprotokollanweisungen in ihrem Code belassen möchten, diese jedoch nicht in der Produktion anzeigen. Sie setzen die Protokollierungsfunktionen außer Kraft, wenn keine Variable festgelegt ist (möglicherweise eine Umgebungsvariable). Darüber hinaus kann dies in einigen Situationen als Sicherheitsmerkmal gelten.

if (!DEBUG_MODE_ON) {
    console = console || {};
    console.log = function(){};

    console.log = function(){};
    console.error = function(){};
    console.count = function(){};
    console.info = function(){};
}

Winston

Wenn Sie etwas Stärkeres als die Standardprotokollierungsoptionen benötigen, sollten Sie sich ein Tool wie Winston ansehen. Gehen Sie zu Atmosphere und suchen Sie einfach nach einem der vielen verfügbaren Winston-Pakete.

https://atmospherejs.com/?q=winston

Seien Sie jedoch gewarnt: Winston ist ein ausgereiftes Produkt, und obwohl es viele Funktionen bietet, fügt es Ihrer Anwendung eine komplexere Ebene hinzu.

Loglevel

Besonders zu erwähnen ist das von der Community entwickelte LogLevel-Paket. Es scheint ein Gleichgewicht zu sein zwischen geringem Gewicht und einfacher Handhabung, während es gut mit der Bündel-Pipeline von Meteor zusammenarbeitet und Zeilennummern und Dateinamen beibehält.

https://atmospherejs.com/practicalmeteor/loglevel



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow