Package org.nuiton.log

Ce package permet de mettre en place facilement des logs dans les applications.

See:
          Description

Interface Summary
LutinLogListener  
 

Class Summary
Log4JWrapper Cette classe n'est utile que parce qu'on ne peut pas modifier le FQCN present dans Log4JLogger.
LutinLog Deprecated. on 20090327 this class seam to produce a frame on each log call (produce huge memory consumption)
LutinLogEvent  
LutinLogFactory  
LutinProgressEvent  
MonitorMapper Helper to monitor LutinLog.
ProgressMonitorFrame  
UserLog Classe permettant d'afficher facillement des messages a l'utilisateur.
 

Enum Summary
LutinLogEvent.LogType  
LutinProgressEvent.ProgressType  
ProgressState  
UserLog.Level  
 

Package org.nuiton.log Description

Ce package permet de mettre en place facilement des logs dans les applications. Il se base sur commons-logging de cette fa�on toutes les applications existantes utilisant commons-logging sont compatible avec LutinLog.

LutinLog ajout les fonctionnalit�s suivantes:

  • user(String), user(String, Throwable) qui permette de logg� des informations � destination de l'utilisateur
  • le suivi des taches: start, min, max, value, end, cancel
  • leve des events sur toutes les methodes: info, warn, error, start, end, ... que les listeners peuvent recevoir
  • des classes permettant d'afficher facilement ces log dans une interface graphique.

    To do

  • beautiful ProgressMonitorFrame :)
  • Il faut mettre en place les MetaLutinLog qui est l'encapsulation de plusieurs LutinLog
  • Ajouter des methodes sur LutinLogFactory pour r�cup�rer des MetaLutinLog (meta de tous les LutinLog existant, meta des LutinLog d'un Thread)
  • Il faut am�liorer le ProgressMonitor pour qu'il puisse afficher si l'utilisateur le souhaite les d�tails d'un MetaLutinLog, c-a-d qu'on affiche toutes les taches en cours (message + progress + cancel?)

    Utilisation

    il faut lancer java avec
     java -Dorg.apache.commons.logging.LogFactory=org.nuiton.log.LutinLogFactory 
    ensuite soit vous n'avez pas besoin des nouvelles fonctionnalit�s et vous pouvez utiliser commons-logging comme habituellement.
    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
    
    class Toto {
    
         /** to use log facility, just put in your code: log.info(\"...\"); */
        static private Log log = LogFactory.getLog(Toto.class);
     
        public void Titi() {
            if (log.isTraceEnabled()) {
                log.trace("Titi called");
            }
        }
    
    Ou si vous souhaitez utiliser les nouvelles fonction
    import org.nuiton.log.LutinLog;
    import org.nuiton.log.LutinLogFactory;
    
    class Toto {
    
         /** to use log facility, just put in your code: log.info(\"...\"); */
        static private LutinLog log = LutinLogFactory.getLutinLog(Toto.class);
     
        public void Titi() {
            if (log.isTraceEnabled()) {
                log.trace("Titi called");
            }
            // ... do something
            log.setActivateProgressMonitorTime(1000);
            log.user("task started");
            log.setMin(0);
            log.setMax(100);
            log.start();
            // ...
            for (int i=0; i<100; i++) {
                if (log.isAskStopTask()) {
                    break;
                }
                log.setValue(i);
                //...
            }
            //...
            log.end();
            log.user("task finished");
        }
    
    Dans cette exemple si la t�che dur plus de 1s (1000 millisecondes) alors la fen�tre de suivi de la t�che est montrer. Sur cette fen�tre l'utilisateur peut demander l'arret de t�che, on v�rifie dont au d�but de chaque boucle que l'utiilisateur n'a pas demand� l'arret de la t�che.

    Il est bien sur possible d'utiliser ces propres composant pour afficher l'avancement d'une t�che, Il est bien sur possible de faire soit m�me les listener qui sont � l'�coute du LutinLog, mais il est souvent plus simple d'utiliser MonitorMapper. Il suffit de lui passer en argument les composants � mettre a jour.

    Il faut bien faire attention de garder une variable accessible de MonitorMapper car sinon il ne se passera rien, cela est du au fait que les listeners de LutinLog sont tous encapsul� dans des WeakReference, pour �viter les fuites m�moire en ajoutant tout le temps de listener sans jamais les supprimer. Ici la suppression est automatique.



    Copyright © 2004-2009 CodeLutin. All Rights Reserved.