Java : loguer les exceptions avec un stacktrace

Boris HUISGEN
Boris HUISGEN
|

La journalisation des exceptions est impérative à la détection, l’analyse et la correction des bugs d’une application, ce quelque soit son environnement d’exécution. Cet article présente le code nécessaire à une application Java.

L’ajout de cette fonctionnalité s’appuie sur l’API java.util.logging :

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

La sortie console informe l’ensemble des informations du stacktrace :

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)
Boris HUISGEN
Boris HUISGEN
Blog owner
  • #java