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.
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.
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