framework:log4j

log4J

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);
}
  • Utilisé pour des logs applicatifs qui seront visibles du client.
  • Tous les paramètres en entrée et en sortie doivent être logués.
//(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 ");   
    }
}
  • Utilisé pour les erreurs mineures, anormales mais qui a priori ne perturbent pas le service.
  • Visibles du client.
  • Utilisé pour les erreurs majeures, comme par exemple plus d'accès à la base de donnée.

Insérer les logs dans un test, pour accélérer l'application en production.

if (log.isDebugEnabled()) {
            log.debug(".....");
}
    <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>
<?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>

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
  • framework/log4j.txt
  • Dernière modification: 2018/10/13 14:59
  • (modification externe)