L'utilisation de la bibliothèque de l'enregistreur dans Ruby est un moyen facile de savoir quand quelque chose a mal tourné avec votre code. En cas de problème, disposer d'un compte rendu détaillé de ce qui s'est produit jusqu'à l'erreur peut vous faire gagner des heures à localiser le bogue. À mesure que vos programmes deviennent plus grands et plus complexes, vous souhaiterez peut-être ajouter un moyen d'écrire des messages de journal. Ruby est livré avec un certain nombre de classes et de bibliothèques utiles appelées bibliothèque standard. Parmi ceux-ci se trouve la bibliothèque d'enregistreurs, qui fournit une journalisation priorisée et rotative.
Étant donné que la bibliothèque de l'enregistreur est livrée avec Ruby, il n'est pas nécessaire d'installer de gemmes ou d'autres bibliothèques. Pour commencer à utiliser la bibliothèque de l'enregistreur, il suffit d'exiger «enregistreur» et de créer un nouvel objet enregistreur. Tous les messages écrits dans l'objet Logger seront écrits dans le fichier journal.
#! / usr / bin / env rubis
nécessite un «enregistreur»
log = Logger.new ('log.txt')
log.debug "Fichier journal créé"
Chaque message de journal a une priorité. Ces priorités facilitent la recherche de messages sérieux dans les fichiers journaux et permettent à l'objet enregistreur de filtrer automatiquement les messages moins importants lorsqu'ils ne sont pas nécessaires. Vous pouvez y penser un peu comme votre liste de choses à faire pour la journée. Certaines choses doivent absolument être faites, certaines choses devraient vraiment être faites et certaines choses peuvent être différées jusqu'à ce que vous ayez le temps de les faire.
Dans l'exemple précédent, la priorité était déboguer, la moins importante de toutes les priorités (le «remettre jusqu'à ce que vous ayez le temps» de votre liste de tâches, si vous voulez). Les priorités des messages de journal, du moins au plus important, sont les suivantes: débogage, info, avertissement, erreur et fatal. Pour définir le niveau des messages que l'enregistreur doit ignorer, utilisez le niveau attribut.
#! / usr / bin / env rubis
nécessite un «enregistreur»
log = Logger.new ('log.txt')
log.level = Enregistreur :: WARN
log.debug "Ce sera ignoré"
log.error "Cela ne sera pas ignoré"
Vous pouvez créer autant de messages de journal que vous le souhaitez et vous pouvez enregistrer chaque petite chose que votre programme fait, ce qui rend les priorités extrêmement utiles. Lorsque vous exécutez votre programme, vous pouvez laisser le niveau de l'enregistreur sur quelque chose comme warn ou error pour attraper les choses importantes. Ensuite, en cas de problème, vous pouvez baisser le niveau de l'enregistreur (soit dans le code source, soit avec un commutateur de ligne de commande) pour obtenir plus d'informations.
La bibliothèque d'enregistreurs prend également en charge la rotation des journaux. La rotation des journaux empêche les journaux de devenir trop volumineux et facilite la recherche dans les journaux plus anciens. Lorsque la rotation du journal est activée et que le journal atteint une certaine taille ou un certain âge, la bibliothèque de l'enregistreur renommera ce fichier et créera un nouveau fichier journal. Les fichiers journaux plus anciens peuvent également être configurés pour être supprimés (ou "tomber hors de rotation") après un certain âge.
Pour activer la rotation des journaux, passez «mensuel», «hebdomadaire» ou «quotidien» au constructeur de l'enregistreur. Facultativement, vous pouvez transmettre une taille de fichier maximale et un nombre de fichiers à conserver en rotation au constructeur.
#! / usr / bin / env rubis
nécessite un «enregistreur»
log = Logger.new ('log.txt', 'quotidiennement')
log.debug "Une fois que le journal devient au moins un"
log.debug "vieux d'un jour, il sera renommé et"
log.debug "un nouveau fichier log.txt sera créé."