Recherche…


Basic Server Side Logging

La première étape de la journalisation consiste simplement à exécuter Meteor à partir du shell, et vous obtiendrez les journaux du serveur dans la console de commande.

meteor

L'étape suivante consiste à diriger le contenu de std_out et std_err vers un fichier journal, comme ceci:

meteor > my_app_log.log 2> my_app_err.log

Outils de journalisation côté client

Une fois que votre serveur est connecté, il est temps de passer du côté client. Si vous n'avez pas encore exploré l'API de la console, préparez-vous à un traitement. Il y a en fait toutes sortes de choses que vous pouvez faire avec l'API intégrée de la console, native de chaque installation Chrome et Safari. À tel point que vous pourriez ne plus avoir besoin de Winston ou d'autres cadres de journalisation.

La première chose à faire est d'installer les outils de journalisation et de développement côté client. Chrome et Safari sont livrés avec eux, mais Firefox nécessite l'extension Firebug.

Extension de Firebug

Ensuite, vous voudrez consulter la documentation de l'API de la console. Les deux documents suivants sont des ressources inestimables pour l'apprentissage de la journalisation de la console.

Outils de développement Chrome

Firebug (Client)

Outils avancés de journalisation de serveur

Une fois que vous disposez à la fois de la journalisation côté serveur et de vos outils de développement côté client, vous pouvez commencer à examiner les extensions spécifiques à Meteor, telles que l'extension Meteor Chrome DevTools. Cela vous permet d'observer la connexion du serveur au client! Parce que la base de données est partout. Comme c'est la journalisation.

Extension Chrome DevTools (Serveur)

Erreur de journalisation sur le volet de la base de données

L'exemple suivant est compris entre 0,5 et 0,7 jours et montre comment enregistrer une erreur lorsque la base de données n'a pas encore renseigné le curseur côté client.

Template.landingPage.postsList = function(){
  try{
    return Posts.find();
  }catch(error){
    //color code the error (red)
    console.error(error);
  }
}

Informations de journalisation sur le contexte de données dans un assistant de modèle

Ce qui suit utilise l'API Chrome Logging. Si la syntaxe .group() est utilisée dans plusieurs modèles, elle organisera graphiquement les journaux de la console à partir de différents modèles en une arborescence hiérarchique.

Vous pouvez également voir comment inspecter le contexte de données actuel et comment corder des données.

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;
}

Journalisation des événements et des interactions utilisateur

Exemple simple d'utilisation de l'API Chrome Logging.

Template.landingPage.events({
  'click .selectItemButton':function(){
    // color code and count the user interaction (blue)
    console.count('click .selectItemButton');
  }
});

Journalisation avec des variables de niveau journal

La journalisation peut souvent encombrer la console, il est donc courant de définir des niveaux de journalisation pour contrôler le détail des données à consigner. Un modèle courant consiste à spécifier des variables de niveau de journalisation.

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);    
        }
    });
  }
});

Désactiver la journalisation en production

Certaines équipes constatent qu'elles souhaitent laisser les instructions du journal de la console dans leur code, mais ne les affichent pas en production. Ils remplacent les fonctions de journalisation si une variable n'est pas définie (éventuellement une variable d'environnement). En outre, cela peut être considéré comme un élément de sécurité dans certaines situations.

if (!DEBUG_MODE_ON) {
    console = console || {};
    console.log = function(){};

    console.log = function(){};
    console.error = function(){};
    console.count = function(){};
    console.info = function(){};
}

Winston

Si vous avez besoin de quelque chose de plus puissant que les options de journalisation par défaut, vous voudrez peut-être examiner un outil comme Winston. Allez dans Atmosphère et recherchez simplement l'un des nombreux packages Winston disponibles.

https://atmospherejs.com/?q=winston

Soyez averti, cependant: Winston est un produit sophistiqué, et même s'il présente de nombreuses fonctionnalités, il ajoutera une complexité supplémentaire à votre application.

Niveau de la logle

Une mention spéciale doit être faite pour le package LogLevel développé par la communauté. Cela semble être un compromis entre la légèreté et la simplicité d'utilisation, tout en fonctionnant bien avec le pipeline de lots de Meteor et en préservant les numéros de lignes et les noms de fichiers.

https://atmospherejs.com/practicalmeteor/loglevel



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow