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.

Firebug-förlängning

Då vill du kolla in Console API-dokumentationen. Följande två dokument är ovärderliga resurser för att lära sig konsolloggning.

Chrome Developer Tools

Firebug (klient)

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



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow