Pour le moment, une entrée par défaut ressemble à ceci:
Oct 12, 2008 9:45:18 AM myClassInfoHere
INFO: MyLogMessageHere
Comment puis-je le faire faire?
Oct 12, 2008 9:45:18 AM myClassInfoHere - INFO: MyLogMessageHere
Clarification J'utilise java.util.logging
logging.properties
, avec adaptation basée sur la suggestion de @BrunoEberhard et un nom abrégé de bûcheron:java.util.logging.SimpleFormatter.format=%1$tF %1$tT %4$.1s %2$s %5$s%6$s%n
1)
-Djava.util.logging.SimpleFormatter.format
Java 7 prend en charge une propriété avec la
java.util.Formatter
syntaxe de chaîne de format.Regardez ici .
Mon favori est:
ce qui rend la sortie comme:
2) Le mettre aux IDE
Les IDE vous permettent généralement de définir les propriétés système d'un projet. Par exemple, dans NetBeans, au lieu d'ajouter -D ... = ... quelque part, ajoutez la propriété dans la boîte de dialogue d'action, sous la forme
java.util.logging.SimpleFormatter.format=%1$tY-%1$tm-...
- sans guillemets. L'IDE devrait comprendre.3) Mettre ça à Maven - Surefire
Pour votre commodité, voici comment l'appliquer à Surefire:
4) fait à la main
J'ai une bibliothèque avec quelques
java.util.logging
classes connexes . Parmi eux, c'estSingleLineFormatter
. Pot téléchargeable ici .la source
Similaire à Tervor, mais j'aime changer la propriété à l'exécution.
Notez que cela doit être défini avant la création du premier SimpleFormatter - comme cela a été écrit dans les commentaires.
la source
Comme l'a dit Obediah Stane, il est nécessaire de créer sa propre
format
méthode. Mais je changerais quelques choses:Créez une sous-classe directement dérivée de
Formatter
, pas deSimpleFormatter
. LeSimpleFormatter
n'a plus rien à ajouter.Soyez prudent avec la création d'un nouvel
Date
objet! Vous devez vous assurer de représenter la date duLogRecord
. Lors de la création d'un nouveauDate
avec le constructeur par défaut, il représentera la date et l'heure duFormatter
traitementLogRecord
, et non la date deLogRecord
création du.La classe suivante peut être utilisée comme formateur dans a
Handler
, qui à son tour peut être ajoutée auLogger
. Notez qu'il ignore toutes les informations de classe et de méthode disponibles dans leLogRecord
.la source
C'est ce que j'utilise.
Vous obtiendrez quelque chose comme ...
la source
ofNullable(record.getThrown()).ifPresent(v -> v.printStackTrace());
juste avant de renvoyer le message formaté.Par capture d'écran, dans Eclipse sélectionnez "exécuter en tant que" puis "Exécuter les configurations ..." et ajoutez la réponse de Trevor Robinson avec des guillemets doubles au lieu de guillemets. Si vous manquez les guillemets doubles, vous obtiendrez des erreurs "Impossible de trouver ou de charger la classe principale".
la source
J'ai trouvé un moyen qui fonctionne. Vous pouvez sous-classer SimpleFormatter et remplacer la méthode de format
Un peu surpris de cette API, j'aurais pensé que plus de fonctionnalités / flexibilité auraient été fournies hors de la boîte
la source
formatMessage(record)
plutôt querecord.getMessage()
. Les espaces réservés ne changeront pas.Cette journalisation est spécifique à votre application et non une fonctionnalité Java générale. Quelle (s) application (s) utilisez-vous?
Il se peut que cela provienne d'une bibliothèque de journalisation spécifique que vous utilisez dans votre propre code. Si tel est le cas, veuillez publier les détails de celui que vous utilisez.
la source
java.util.logging.Logger
Si vous vous connectez à une application Web à l'aide de tomcat, ajoutez:
Sur les arguments VM
la source
si vous utilisez java.util.logging, il existe un fichier de configuration qui le fait pour consigner le contenu (sauf si vous utilisez la configuration par programmation). Ainsi, vos options sont
1) exécuter le post-processeur qui supprime les sauts de ligne
2) modifier la configuration du journal ET supprimer les sauts de ligne. Redémarrez votre application (serveur) et vous devriez être bon.
la source