Avoir des logs propre et clair séparés pour chaque application de serveur. Pour ce faire, rien de mieux que l’utilisation de LOG4J, très couramment utilisé pour réaliser des logs dans les applications JEEJava Entreprise Edition. http://logging.apache.org/log4j/
On pourrait utiliser les logs de JBOSS mais ceci créerai une adhérence entre les applications (WAR) et le serveur alors que l’utilisation de LOG4J permet de garder une totale indépendance avec votre serveur, ce qui est toujours préférable quand on souhaite créer des applications agiles et portables.
Pour utiliser LOG4J avec JBOSS, il faut préalablement spécifier que vous voulez utiliser votre version et pas celle fournie dans les modules de JBOSS. Pour ça il faut créer un fichier jboss-deployment-structure.xml et le placer à la racine de WEB-INF, comme sur la capture suivante:
Dedans, il faut rentrer l’exclusion du module lors du déploiement de l’application.
<?xml version= »1.0″ encoding= »UTF-8″?>
<jboss-deployment-structure>
<deployment>
<!– Exclusions allow you to prevent the server from automatically adding
some dependencies –>
<exclusions>
<module name= »org.apache.log4j » />
</exclusions>
</deployment>
</jboss-deployment-structure
Ceci permet de ne pas avoir de conflit entre votre version (ici log4j-1.2.16.jar) qui se trouve dans WEB-INF/lib et celle du serveur.
Dernière étape, créer votre log4j.xml et le placer dans la racine des sources java de sorte que celui-ci se retrouve dans le bon répertoire une fois le WAR crée.
Voici un exemple du fichier log4j.xml
<?xml version= »1.0″ encoding= »UTF-8″?>
<!DOCTYPE log4j:configuration SYSTEM « log4j.dtd »>
<log4j:configuration xmlns:log4j= »http://jakarta.apache.org/log4j/ »
debug= »false »>
<appender name= »CONSOLE » class= »org.apache.log4j.ConsoleAppender »>
<layout class= »org.apache.log4j.PatternLayout »>
<param name= »ConversionPattern » value= »[%d{dd/MM/yy hh:mm:ss}] %5p %c{2}: %m%n » />
</layout>
</appender>
<appender name= »PobiAppender » class= »org.apache.log4j.RollingFileAppender »>
<param name= »File » value= »/var/log/jboss/extranet_www.log » />
<param name= »MaxFileSize » value= »1MB » />
<param name= »MaxBackupIndex » value= »100″ />
<layout class= »org.apache.log4j.PatternLayout »>
<param name= »ConversionPattern » value= »[%d{dd/MM/yy hh:mm:ss}] %5p %c{2}: %m%n » />
</layout>
</appender>
<appender name= »HibernateAppender » class= »org.apache.log4j.RollingFileAppender »>
<param name= »File » value= »/var/log/jboss/hibernate\_extranet\_www.log » />
<param name= »MaxFileSize » value= »1MB » />
<param name= »MaxBackupIndex » value= »100″ />
<layout class= »org.apache.log4j.PatternLayout »>
<param name= »ConversionPattern » value= »[%d{dd/MM/yy hh:mm:ss}] %5p %c{2}: %m%n » />
</layout>
</appender>
<root>
<priority value= »ERROR » />
<appender-ref ref= »CONSOLE » />
<appender-ref ref= »PobiAppender » />
</root>
<logger name= »fr.www »>
<level value= »debug » />
<appender-ref ref= »CONSOLE » />
<appender-ref ref= »PobiAppender » />
</logger>
<logger name= »org.hibernate »>
<level value= »info » />
<appender-ref ref= »CONSOLE » />
<appender-ref ref= »HibernateAppender » />
</logger>
</log4j:configuration>
Il ne vous reste plus qu’a utiliser votre loggeur préféré dans les classes JAVA comme ceci:
private static Logger mLogger = Logger.getLogger(MonBean.class);
mLogger.debug(« mon commentaire »);
Voilà vous obtenez un logger simple et efficace pour vos applications!
Découvrez la planche #36 !
Générer un rapport dans Jasperreport n’est pas simple. Jasperreport compilant de façon séquentielle, il n’est pas facile de stocker les numéros des pages générées pour ensuite les afficher sur la première page du rapport.
Derrière le terme « cloud » se cache bien plus qu’un simple mot à la mode ou un lointain serveur hébergé quelque part sur Internet. Depuis une dizaine d’années, le cloud computing s’est imposé comme LE modèle incontournable pour déployer ces applications. Mais de quoi parle-t-on réellement quand on évoque le cloud ? Pourquoi tout le monde fait-il cette transition ? Quels sont les avantages, mais aussi les limites de ce modèle ?