Sök…
Grundläggande serverloggning
Det första steget att logga in är helt enkelt att köra Meteor från skalet, så får du serverloggarna i kommandokonsolen.
meteor
Nästa steg är att leda innehållet i std_out och std_err till en loggfil, så:
meteor > my_app_log.log 2> my_app_err.log
Loggarverktyg för klientsidan
När du har loggat in din serversida är det dags att hoppa över till klientsidan. Om du inte har utforskat API-konsolen ska du vara beredd på en behandling. Det finns faktiskt alla möjliga saker du kan göra med det inbyggda konsol-API: et som är inbyggt i varje Chrome och Safari-installation. Faktum är att du kanske inte behöver Winston eller andra loggar.
Det första du vill göra är att installera klientsidesloggning och verktyg för utvecklare. Chrome och Safari skickar båda med sig, men Firefox kräver Firebug-förlängningen.
Då vill du kolla in Console API-dokumentationen. Följande två dokument är ovärderliga resurser för att lära sig konsolloggning.
Avancerade serverloggningsverktyg
När du väl har både din loggning på serversidan och utvecklingsverktygen för klientsidan kan du börja titta på Meteor-specifika tillägg som Meteor Chrome DevTools Extension. Detta gör att du faktiskt kan se serverloggning i klienten! Eftersom databasen finns överallt. Som loggar.
Chrome DevTools-förlängning (server)
Loggningsfel på databasfliken
Följande exempel är från 0,5 - 0,7 dagar och illustrerar hur man loggar in ett fel när databasen inte har fyllt på klientsidemarkören ännu.
Template.landingPage.postsList = function(){
try{
return Posts.find();
}catch(error){
//color code the error (red)
console.error(error);
}
}
Loggar info om datasammanhanget i en mallhjälpare
Följande använder Chrome Logging API. Om .group()
-syntaxen används i flera mallar kommer den grafiskt att organisera konsolloggarna från olika mallar i ett hierarkiskt träd.
Du kan också se hur man inspekterar det aktuella datasammanhanget och hur man stränger data.
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;
}
Loggar händelser och användarinteraktioner
Enkelt exempel på att använda Chrome Logging API.
Template.landingPage.events({
'click .selectItemButton':function(){
// color code and count the user interaction (blue)
console.count('click .selectItemButton');
}
});
Loggning med variabler för loggnivå
Loggning kan ofta röras upp på konsolen, så det är vanligt att definiera loggnivåer för att kontrollera vilken detaljerad information som loggas. Ett vanligt mönster är att ange variabler för loggnivå.
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);
}
});
}
});
Inaktivera inloggning i produktion
Vissa team tycker att de vill lämna ut konsolloggar i sina koder, men inte att de ska visas i produktionen. De åsidosätter loggningsfunktionerna om en variabel inte är inställd (eventuellt en miljövariabel). Dessutom kan detta betraktas som en säkerhetsfunktion i vissa situationer.
if (!DEBUG_MODE_ON) {
console = console || {};
console.log = function(){};
console.log = function(){};
console.error = function(){};
console.count = function(){};
console.info = function(){};
}
Winston
Om du behöver något mer kraftfullt än standardloggningsalternativen kanske du vill titta på ett verktyg som Winston. Gå till atmosfären och sök bara efter ett av de många tillgängliga Winston-paketen.
https://atmospherejs.com/?q=winston
Varna dock - Winston är en sofistikerad produkt, och även om den avslöjar mycket funktionalitet, kommer den också att lägga till ett lager av komplexitet i din applikation.
LogLevel
Ett särskilt omnämnande bör nämnas för det communityutvecklade LogLevel-paketet. Det verkar vara en balans mellan att vara lätt och enkel att använda, samtidigt som det fungerar bra med Meteors bundpipeline och bevara radnummer och filnamn.
https://atmospherejs.com/practicalmeteor/loglevel