2008-11-26 7 views
4

Lorsque vous utilisez log4perl, la mise en page du journal de débogage que j'utilise est:Comment rendre la sortie de log4perl plus facile à lire?

log4perl.appender.D10.layout=PatternLayout 
log4perl.appender.D10.layout.ConversionPattern=%d [pid=%P] %p %F{1} (%L) %M %m%n 
log4perl.appender.D10.Filter = DebugAndUp 

Ce produit journaux de débogage très verbeux, par exemple:

2008/11/26 11:57:28 [pid=25485] DEBUG SomeModule.pm (331) functions::SomeModule::Test Test XXX was successfull 
2008/11/26 11:57:29 [pid=25485] ERROR SomeOtherUnrelatedModule.pm (99999) functions::SomeModule::AnotherTest AnotherTest YYY has faled 

Cela fonctionne très bien, et fournit d'excellentes données de débogage . Cependant, chaque ligne du journal de débogage contient des noms de fonctions différents, une longueur de pid, etc. Cela rend chaque mise en page de ligne différente et rend la lecture des journaux de débogage beaucoup plus difficile qu'elle ne devrait l'être. Y at-il un moyen dans log4perl de formater la ligne pour que les métadonnées de débogage (tout jusqu'à la fin du message) soient complétées à la fin par des espaces/tabulations, et que le message commence par la même colonne de texte ?

Répondre

8

Vous pouvez remplir les champs individuels qui composent vos entrées. Par exemple [pid =% 5P] vous donnera toujours au moins 5 caractères pour le PID.

Le "Quantify Placeholders" section dans les documents pour Log :: Log4perl :: Layout donne plus de détails.

+0

lien original est cassé, [ce] (http://search.cpan.org/~mschilli/Log-Log4perl-1.32/lib/Log/Log4perl/Layout/PatternLayout.pm#Quantify_placeholders) travaille un – Samuel

5

Il y a deux façons d'aller avec cela, même si vous devez comprendre que l'on travaille mieux à votre situation:

  1. Utilisez un autre appender si vous travaillez en direct. Avoir cet appender utiliser un modèle qui montre seulement l'information que vous voulez. Si vous travaillez en un seul processus, par exemple, votre autre appender peut laisser le PID et l'horodatage. Vous n'aurez peut-être besoin que du nom de fichier et du numéro de ligne.

  2. Utilisez %n pour mettre les nouvelles lignes au bon endroit. Cela rend la sortie multi-ligne légèrement plus difficile à analyser ultérieurement, mais vous pouvez choisir une autre séquence pour le séparateur d'enregistrement d'entrée (par exemple, un littéral "[EOL]") pour faciliter la lecture entrée par entrée.

  3. Connectez-vous à une base de données au lieu d'un fichier. Pour vos rapports, sélectionnez uniquement les colonnes que vous souhaitez inspecter. Loggez tout, mais écrivez un filtre pour parcourir le fichier journal ad-hoc pour n'afficher que les parties que vous voulez voir, telles que seulement les messages de débogage, les entrées entre certaines heures, seulement les entrées impliquant un fichier, et ainsi de suite.

Questions connexes