On Thu, 7 Mar 2013 12:01:11 +0100 Tony Chemit <chemit@codelutin.com> wrote:
On Thu, 07 Mar 2013 11:25:27 +0100 Eric Chatellier <chatellier@codelutin.com> wrote:
Salut,
On a souvent besoin d'avoir des valeurs dynamiques dans la configuration log4j et log4j se gérant tout seul, on ne peu pas trop intervenir.
Il devrait pouvoir être possible de configurer log4j nous même au runtime (ca inclut une dépendance forte), mais ca permettrais de rendre la configuration dynamique et de pouvoir la surcharger très facilement.
Ca impliquerait donc : - de ne plus avoir de fichier log4j.(properties|xml) dans le classpath - d'avoir cette config dans le fichier lu par application config - d'avoir une dépendance 'compile' sur log4j dans l'application final - d'appeler manuellement le code suivant: Properties props = config.getProperties(); org.apache.log4j.PropertyConfigurator.configure(props)
Le principe pourrait être adapté pour une utilisation sur logback également.
Vous en pensez quoi ?
Hum,
- avoir une dépendance forte vers log4j n'est pas acceptable (au pire une provided me convient) - devoir écrire une conf log4J à la main n'est pas non plus acceptable, on pourrait imaginer avoir un fichier squelette log4-applicationConfig.properties qui serait alors interpolé en log4.properties.
La seule chose que je vois à mettre dans Applicationconfig c'est :
- le nom du fichier où on veut écrire - le nom du fichier template de la conf log4j, logback,...
Perso je suis vraiment contre l'idée d'avoir toute la configuration log4j dans ApplicationConfig, quelle pollution :(
Mais on peut travailler pour pouvoir recharger les configurations par contre :)
Salut, Personnellement, j'aime bien l'idée que dans la configuration d'une application[1], l'utilisateur/admin puisse indiquer où devra être mis le fichier de log et quel niveau de log ils souhaites. Mais pas plus, s'il a besoin de plus, il devra recherche et apprendre a utiliser les outils de log. Avec des valeurs par defaut: - il n'y pas de fichier de log: on log sur la sortie standard - il y a un fichier de log: il a une rotation hebdomadaire (mensuel?) - il n'y a pas de niveau de log défini: WARN est par défaut Après comment faire ca sans contraindre l'utilisation d'une librairie de log (ex: log4j). Je ne sais pas trop, il faut voir techniquement. Mais pour l'instant on s'appuie sur commons-logging, celui-ci est peut-etre capable de nous indiquer quelle est la librairie reellement utiliser et on la configure au parsing des options par ApplicationConfig ? [1] car ca permet pour une application web de changer de container (tomcat, jetty, glassfish, ...) facilement sans devoir apprendre pour chaque comment faire pour retrouver ces logs applicatifs. Ou pour un admin linux (qui forcément n'aime pas Java) de ne pas lui demander d'apprendre a écrire un fichier pour configurer log4j ou autre alors qu'il ne sait même pas ce qu'est log4j parce que c'est son chef qui lui a demandé d'installer une appli Java dont il a déjà horreur. -- Benjamin POUSSIN -------------------- tél: +33 (0) 2 40 50 29 28 email: poussin@codelutin.com http://www.codelutin.com