J'écris un outil de ligne de commande qui effectue un certain nombre de tests sur nos serveurs et signale une sortie à l'écran. J'utilise actuellement log4j pour imprimer à l'écran et dans un fichier journal.Meilleure technique pour imprimer du texte sur la console
Cependant, je me demandais s'il y avait une meilleure technique pour gérer toutes les impressions d'une classe au lieu d'avoir les commandes "impression" dispersées partout dans mon code.
par exemple.
logger.info("Connecting to environment: " + envName);
if (cmd.hasOption(OPTION_CHECK_PRIMARY)) {
//print primary leg
String primaryLegName = env.getPrimaryLeg().getLegName();
String message = "is primary";
logger.info(String.format("%s : %-4s %s", envName, primaryLegName, message));
}
Ceci est un exemple de la sortie qui est maintenant dispersée dans tout mon code.
Serait-il préférable d'avoir une classe Formatter qui gère toutes les impressions?
Quelle est la meilleure approche pour le créer?
Que pensez-vous quelque chose comme:
Formatter pf = new PlainFormatter();
...
pf.printEnvironment(envName);
if (cmd.hasOption(OPTION_CHECK_PRIMARY)) {
//print primary leg
String primaryLegName = env.getPrimaryLeg().getLegName();
pf.printPrimary(envName, primaryLegName);
}
Bonjour Amir, J'utilise log4j pour le moment, donc je fais exactement comme tu dis. Cependant, je ne veux pas imprimer à partir d'une partie différente du code, mais je préfère avoir une classe unique/externe qui gère l'impression. De cette façon, si je veux changer la façon dont j'affiche la sortie, je n'ai pas besoin d'aller chercher les instructions d'impression dans toutes mes classes. – Alessandro
Qu'envisagez-vous de changer à l'avenir? Le formatage et le niveau de journalisation ne sont-ils pas contrôlés via le fichier de propriétés? Y aurait-il une raison pour extraire juste un appel de fonction d'une ligne? –