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.

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

Firebug (klant)

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



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow