12
votes

Comment je formater mon message de journal

Je voudrais formater mon message de journal avant d'être imprimé sur la console LOGGER.FINE

E.g. Comment puis-je formater "{0} a {1} pommes avec lui", de sorte que les entrées sont John et 10

Je préférerais un cadre de journalisation qui fournit une solution à cela et je ne veux pas formater ces messages séparément. Les classes de journalisation spécifiques de JDK6 ne semblent pas avoir cette granularité.


2 commentaires

Si vous utilisez SLF4J , vous pouvez écrire: log.debug ("{} a {} pommes avec lui "," John ", 10); slf4j a une liaison qui redirige vers java.util.logging .


Veuillez reformuler la question. La tokéninzation consiste à briser une chaîne en pièces constitutives et génère des sorties non des entrées. Votre exemple suggère que vous vous demandez comment formater, non pas de tokeniser.


3 Réponses :


3
votes

Il suffit d'utiliser string.format : xxx


1 commentaires

String.format aura une pénalité de performance lorsqu'il sera utilisé directement pour la journalisation



22
votes

Utilisez MessageFormat :

String s = String.format("%1$s has %2$d apples with him", "John", 10);


2 commentaires

Pour des cas simples comme celui-ci, vous pouvez simplement laisser le 1 $ et 2 $ et utiliser "% s a% d pommes avec lui" pour string.format () .


+1 pour MessageFormat - J'ai pu convertir toutes mes relevés de journal pour utiliser MessageFormat très peu d'effort



6
votes

Même avec Just JDK Logging, vous pouvez utiliser un formateur code> pour gérer la mise en forme de messages de journal avec des paramètres.

pour (un simpliste) Exemple: p>

java.util.logging.ConsoleHandler.formatter = com.example.MyFormatter


0 commentaires