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.