Java : loguer les exceptions avec un stacktrace

Boris HUISGEN May 2, 2009

développement java logging

Le logging des exceptions est nécessaire dans le cadre d’exécution d’un programme démon.

L’ajout de cette fonctionnalité se fait par un simple code utilisant l’API java.util.logging de Java :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
    private final static Logger m_logger = Logger.getLogger ("package.MyClass");
    
    try
    {
        // … code …
    }
    catch (Exception exception)
    {
        StringBuilder stackTrace = new StringBuilder ("exception during execution: " +
            exception.getMessage ());
    
        for (StackTraceElement element : exception.getStackTrace ())
        {
            stackTrace.append ("\n\tat " + element.getClassName ()
                    + ":" + element.getMethodName () + "("
                    + element.getFileName () + ":"
                    + element.getLineNumber () + ")");
        }
    
        m_logger.log (Level.SEVERE, stackTrace.toString ());
    }

Exemple de sortie :

    2 mai 2009 18:51:26 fr.hbis.ircs.Client parse
    GRAVE: exception during command execution 'JOIN': fr.hbis.ircs.Channel.create(Ljava/lang/String;
    Ljava/lang/String;)Lfr/hbis/ircs/Channel;
    at fr.hbis.ircs.commands.Join:doCommand(Join.java:130)
    at fr.hbis.ircs.commands.Join:execute(Join.java:64)
    at fr.hbis.ircs.Client:parse(Client.java:158)
    at fr.hbis.ircs.Client:read(Client.java:127)
    at fr.hbis.ircs.nio.MessageTask:doProcess(MessageTask.java:253)
    at fr.hbis.ircs.nio.MessageTask:doRead(MessageTask.java:197)
    at fr.hbis.ircs.nio.MessageTask:doTask(MessageTask.java:152)
    at fr.hbis.ircs.lib.nio.task.TaskBase:run(TaskBase.java:102)
    at java.util.concurrent.ThreadPoolExecutor$Worker:runTask(ThreadPoolExecutor.java:885)
    at java.util.concurrent.ThreadPoolExecutor$Worker:run(ThreadPoolExecutor.java:907)
    at fr.hbis.ircs.lib.nio.worker.DefaultWorkerThread:run(DefaultWorkerThread.java:123)

See also

Java : options d’exécution de la JVM
Read more
Eclipse : Remote debugging avec JDPA
Read more
Gentoo : crash récurrent de nscd sous amd64
Read more