Zoeken…
Basic Server Side Logging
De eerste stap om te loggen is om Meteor vanuit de shell te starten en u krijgt de serverlogboeken in de opdrachtconsole.
meteor
De volgende stap is om de inhoud van std_out en std_err als volgt naar een logbestand te leiden:
meteor > my_app_log.log 2> my_app_err.log
Hulpprogramma's voor logboekregistratie aan clientzijde
Zodra u uw serverkant hebt aangemeld, is het tijd om naar de clientkant te springen. Als je de console-API niet hebt verkend, wees dan voorbereid op een traktatie. Er zijn eigenlijk allerlei dingen die u kunt doen met de ingebouwde console-API die eigen is aan elke Chrome- en Safari-installatie. In feite zelfs zo dat je merkt dat je geen Winston of andere logboekframes nodig hebt.
Het eerste dat u wilt doen, is logboek- en ontwikkelaarstools voor de client installeren. Chrome en Safari worden beide meegeleverd, maar Firefox vereist de Firebug-extensie.
Dan wil je de Console API-documentatie bekijken. De volgende twee documenten zijn van onschatbare waarde voor het registreren van leerconsoles.
Hulpmiddelen voor Chrome-ontwikkelaars
Geavanceerde hulpprogramma's voor serverregistratie
Zodra u zowel uw server-side logging als uw client-side ontwikkelingstools hebt uitgevoerd, kunt u beginnen met kijken naar Meteor-specifieke extensies zoals de Meteor Chrome DevTools Extension. Hiermee kunt u de serverregistratie in de client observeren! Omdat de database overal is. Zoals loggen.
Chrome DevTools-extensie (server)
Logfout op databaseklep
Het volgende voorbeeld is van 0,5 - 0,7 dagen en illustreert hoe een fout moet worden geregistreerd wanneer de database de cursor van de client nog niet heeft ingevuld.
Template.landingPage.postsList = function(){
try{
return Posts.find();
}catch(error){
//color code the error (red)
console.error(error);
}
}
Informatie over de gegevenscontext registreren in een sjabloonhelper
Het volgende maakt gebruik van de Chrome Logging API. Als de syntaxis .group()
in meerdere sjablonen wordt gebruikt, worden de .group()
grafisch van verschillende sjablonen georganiseerd in een hiërarchische structuur.
U kunt ook zien hoe u de huidige gegevenscontext kunt inspecteren en hoe u gegevens kunt stringificeren.
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;
}
Gebeurtenissen en gebruikersinteracties registreren
Eenvoudig voorbeeld van het gebruik van de Chrome Logging API.
Template.landingPage.events({
'click .selectItemButton':function(){
// color code and count the user interaction (blue)
console.count('click .selectItemButton');
}
});
Logboekregistratie met variabelen op logniveau
Loggen kan de console vaak overbelasten, dus het is gebruikelijk om logniveaus te definiëren om te bepalen welk detail van gegevens wordt vastgelegd. Een gebruikelijk patroon is het specificeren van variabelen op logniveau.
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);
}
});
}
});
Logging in productie uitschakelen
Sommige teams vinden dat ze console-logboekinstructies in hun code willen laten, maar deze niet in productie willen laten weergeven. Ze overschrijven de logfuncties als er geen variabele is ingesteld (mogelijk een omgevingsvariabele). Bovendien kan dit in sommige situaties als een beveiligingsfunctie kwalificeren.
if (!DEBUG_MODE_ON) {
console = console || {};
console.log = function(){};
console.log = function(){};
console.error = function(){};
console.count = function(){};
console.info = function(){};
}
Winston
Als u iets nodig hebt dat krachtiger is dan de standaardregistratie-opties, wilt u misschien een tool als Winston bekijken. Ga naar Sfeer en zoek gewoon naar een van de vele beschikbare Winston-pakketten.
https://atmospherejs.com/?q=winston
Wees echter gewaarschuwd - Winston is een geavanceerd product en hoewel het veel functionaliteit biedt, voegt het ook een laag complexiteit toe aan uw toepassing.
Log niveau
Een speciale vermelding verdient het door de community ontwikkelde LogLevel-pakket. Het lijkt een evenwicht te vinden tussen lichtgewicht en eenvoudig te gebruiken, terwijl het goed werkt met de bundelpijplijn van Meteor en met behoud van regelnummers en bestandsnamen.
https://atmospherejs.com/practicalmeteor/loglevel