log4J
Niveau de log
DEBUG
Utilisé pour le debuggage
- Le format des logs est <méthode> : <texte>.
- Émettre un log à chaque entrée de méthode autre que les accesseurs (set et get), avec <texte> qui commence par start, puis loggue les attributs.
- Émettre un log à chaque sortie de méthode, avec <texte> qui commence par end.
private void encodeData(String data) { logger_.debug("encodeData : start, data = " + data); //... logger_.debug("encodeData : end); }
INFO
- Utilisé pour des logs applicatifs qui seront visibles du client.
- Tous les paramètres en entrée et en sortie doivent être logués.
Exemple de code :
//(ne pas oublier la librairie log4J en import) public class testLog4J { static org.apache.log4j.Logger logger_= Logger.getLogger(GestionLog.class.getName()); public static void main(String[] args) { logger_.info(" log info "); logger_.debug(" log debug "); logger_.warn(" log warn "); logger_.fatal(" log fatal "); } }
WARN
- Utilisé pour les erreurs mineures, anormales mais qui a priori ne perturbent pas le service.
- Visibles du client.
ERROR
- Utilisé pour les erreurs majeures, comme par exemple plus d'accès à la base de donnée.
Pour une meilleur performance
Insérer les logs dans un test, pour accélérer l'application en production.
if (log.isDebugEnabled()) { log.debug("....."); }
Pour activer les logs hibernate
<logger name="org.hibernate.SQL"> <!-- Print Hibernate queries. --> <level value="DEBUG" /> </logger> <logger name="org.hibernate.id"> <!-- Print Hibernate sequence Id. --> <level value="DEBUG" /> </logger> <logger name="org.hibernate.type"> <!-- Print Hibernate queries parameters. --> <level value="DEBUG" /> </logger>
Le 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/"> <appender name="MyAppender2" class="org.apache.log4j.ConsoleAppender"> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%r %d{yyyy-MM-dd HH:mm:ss} %-5p %c -=- %m%n"/> </layout> </appender> <appender name="MyAppender3" class="org.apache.log4j.RollingFileAppender"> <param name="File" value="debug.log" /> <param name="Threshold" value="warn"/> <param name="MaxFileSize" value="3000KB"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%r %d{yyyy-MM-dd HH:mm:ss} %-5p %c [%t] -=- %m%n"/> </layout> </appender> <!-- Configuration --> <logger name="app.persistance"> <level value="info"/> <appender-ref ref="MyAppender2"/> <appender-ref ref="MyAppender3"/> </logger> <logger name="app.service"> <level value="debug"/> <appender-ref ref="MyAppender2"/> <appender-ref ref="MyAppender3"/> </logger> <logger name="app.webapp"> <level value="warn"/> <appender-ref ref="MyAppender2"/> <appender-ref ref="MyAppender3"/> </logger> </log4j:configuration>
Le fichier log4j.properties :
Dans un contexte d'utilisation du plugin Ganymede et Eclipse.
log4j.rootLogger=ERROR gwadanina.app.brique=ServicesMetiers gwadanina.app.version=1.0 log4j.appender.fonctionnel=org.apache.log4j.RollingFileAppender log4j.appender.fonctionnel.File=/logs/services-fonctionnel.log log4j.appender.fonctionnel.MaxFileSize=500KB log4j.appender.fonctionnel.MaxBackupIndex=2 log4j.logger.fonctionnel=DEBUG, ganymede, fonctionnel log4j.additivity.fonctionnel=false log4j.appender.ganymede=org.apache.log4j.net.SocketAppender log4j.appender.ganymede.remoteHost=localhost log4j.appender.ganymede.port=4445 log4j.appender.ganymede.locationInfo=true # iBATIS log4j.logger.com.ibatis=INFO, ganymede log4j.additivity.com.ibatis=false # SQL gwadanina.niveau=INFO log4j.logger.java.sql.PreparedStatement=${sge.niveau}, ganymede log4j.logger.java.sql.Connection=${sge.niveau}, ganymede log4j.logger.java.sql.Statement=${sge.niveau}, ganymede log4j.logger.java.sql.ResultSet=${sge.niveau}, ganymede log4j.additivity.java.sql.PreparedStatement=false log4j.additivity.java.sql.Connection=false log4j.additivity.java.sql.Statement=false log4j.additivity.java.sql.ResultSet=false # Mail alert log4j.logger.EMAIL = FATAL, EMAIL log4j.logger.EMAIL.access = FATAL log4j.appender.EMAIL = org.apache.log4j.net.SMTPAppender log4j.appender.EMAIL.SMTPHost = smtp.gwadanina_.net log4j.appender.EMAIL.From = from@gwadanina_.net log4j.appender.EMAIL.To = to@gwadanina_.net log4j.appender.EMAIL.BufferSize = 50 log4j.appender.EMAIL.layout = org.apache.log4j.PatternLayout log4j.appender.EMAIL.layout.ConversionPattern = <%d> [%t] <%c> %m \n log4j.appender.EMAIL.Subject = Application Error Occured log4j.appender.EMAIL.threshold = FATAL