comment puis-je définir le log4j conversionpattern au moment de l'exécution
Question
J'ai une application Java tout en analysant les entrées d'une feuille de calcul. J'ai ajouté la possibilité d'exécuter uniquement la partie analyseur autonome à partir d'une tâche ant. Cependant, le modèle log4j normal que j'utilise peut rendre la sortie difficile à lire, j'aimerais définir un modèle simple au moment de l'exécution.
Donc, quelque chose comme log4j.appender.stdout.layout.ConversionPattern =% d {aaaa-MM-jj HH: mm: ss}% m% n
parseDebug = new Boolean(System.getProperty("ptpunit.parseDebug")).booleanValue();
if(parseDebug){
// SET CONVERSION PATTERN HERE
log.setLevel((Level) Level.DEBUG);
}
La solution
Je pense que vous pourriez faire quelque chose comme ceci:
ConsoleAppender a = (ConsoleAppender) Logger.getRootLogger().getAppender("stdout");
a.setLayout(new PatternLayout("%d{HH:mm:ss} %-5.5p %t %m%n"));
Bien sûr, vous devez modifier le type d’appeleur en fonction de celui que vous utilisez et vous devrez peut-être remplacer "Logger.getRootLogger ()". par l'appel à récupérer l'enregistreur auquel votre appender est réellement attaché.