7
votes

Convertir E.PrintStackTrace () pour utiliser Log4J à la place

Je suis très nouveau pour log4j. Je ne veux pas montrer la trace de la pile d'exception dans mon fichier journal tel que xxx pré>

Ces exceptions sont écrites directement à la console à l'aide de E.PrintStackTrace () Code> Comme ça

try {
    // something
} catch(Exception e) {
    StringWriter stack = new StringWriter();
    e.printStackTrace(new PrintWriter(stack));
    logger.debug("Caught exception; decorating with appropriate status template : " + stack.toString());
}


3 commentaires

Vous auriez d'abord besoin de utiliser log4j. La déclaration de capture que vous montrez a) n'utilise pas log4j; b) N'imprimez même rien nulle part. Il remplit simplement un StringWriter avec la stacktrace.


J'ai changé mon code. Mon échantillon utilise à la fois E.PrintStackTrace () et Logger.debug (). Ce n'est pas écrit par moi. Mon projet utilise ce fichier JAR dont la source attachée est montrée comme celle-là.


Ce que je ferais, c'est de créer une imprimante pour remplacer System.err qui écrit tout ce qu'il devient log4j. De cette façon, vous pouvez utiliser System.out ou System.err Toute façon que vous aimez et utilise effectivement log4j. ;)


3 Réponses :


8
votes

Utiliser l'enregistreur # Erreur

import org.apache.log4j.Logger;

...

Logger log = Logger.getLogger(Locomotive.class);
log.error("your message", exc);

...


0 commentaires

8
votes

Le code

StringWriter stack = new StringWriter();
e.printStackTrace(new PrintWriter(stack));
logger.debug("Caught exception; decorating with appropriate status template : " + stack.toString());


2 commentaires

Ouais. Parce que nous avons déjà utilisé logger.debug (). Je pense que nous n'avons pas besoin d'utiliser E.PrintStackTrace (nouvel imprimé (pile)); Mais la source déjà utilisée comme ça.


Je ne pense pas que tu creuses ce code. Rien n'est redondant ici; printstacktrace dans votre exemple n'est pas réellement Imprimer rien. Le programmeur voulait juste une étalage annexée à un message journal de débogage , où log4j ne prend pas en charge log.debug (msg, exc) --- et pour une bonne raison.



0
votes
logger.info("Inside add() of Abc class");
logger.error("Error occurred while calculation::::"+errorMessage);

0 commentaires