Java : loguer les exceptions avec un stacktrace
- Samedi 2 mai 2009
- Publié dans Développement . Java
- Par Boris HUISGEN
- Ecrire
Un petit bout de code utile pour tout programme de type démon/serveur et qui permet d’enregistrer dans un fichier journal (cf. API java.util.logging) toute exception non gérée, en particulier avec son stacktrace complet, tel que Java le produirait en console :
private final static Logger m_logger = Logger.getLogger ("package.MyClass");
try
{
[...]
}
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 d’output :
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)
Sympa, on en perd plus une miette.
Pas encore de commentaires.