how to print an exception using logger?
在这种情况下,我希望使用logger打印catch块中捕获的所有异常。
1 2 3 4 5 6 7 8 9 10
| try {
File file = new File("C:\\className"). mkdir();
fh = new FileHandler ("C:\\className\\className.log");
logger. addHandler(fh );
logger. setUseParentHandlers(false);
SimpleFormatter formatter = new SimpleFormatter ();
fh. setFormatter(formatter );
} catch (Exception e ) {
logger. info(e );
} |
我知道错误记录器不能应用于java.io.Exception...。
我担心的是,如果我在try块中做了这么多事情,并且只保留一个catch块作为catch(异常E),那么有没有任何方法可以使用记录器来打印catch块中捕获的任何异常?注意:我们使用的是java.util.logging.logger API
- stackoverflow.com/a/1149718/112500
- stackoverflow.com/questions/1149703/…的可能副本
- 通常,日志文件名、格式等都放在代码之外,以便在生产中对其进行调整。
您可能应该澄清您使用的是哪个记录器。
org.apache.commons.logging.Log接口有方法void error(Object message, Throwable t)和方法void info(Object message, Throwable t)记录堆栈跟踪和自定义消息。log4j实现也有这个方法。
所以,你可能需要写:
1
| logger.error("BOOM!", e); |
如果您需要使用信息级别来记录它(尽管,这可能是一个奇怪的用例),那么:
1
| logger.info("Just a stack trace, nothing to worry about", e); |
。
希望有帮助。
- @Kadelakig抱歉,我们正在使用java.util.looging API
- 哦,我明白了。似乎还有一些类似的功能:java.util.logging.Logger.getLogger("Test").log(Level.INFO,"BOOM!", e);<——这对我很有用。
- 是的,这有助于我寻找的东西
使用:LOGGER.log(Level.INFO,"Got an exception.", e);
或LOGGER.info("Got an exception." + e.getMessage());
- 如果异常是意外的,那么我建议对日志消息使用严重警告日志级别
- 是的,对于可能是真的意外异常。不过,我回答了这个问题,提问者在哪里使用信息日志级别进行日志记录,因此我的示例使用信息。
尝试如下记录堆栈跟踪:
1
| logger.error("Exception ::" , e); |
号
- 我尝试了这个方法,得到了错误符号没有找到的符号:方法错误(java. Lang.Stand,java. Io.IOExt)位置:类java. UTIL.Loggg.Logger-Logg.Error("异常::",e);
- @Pankaj不是用log4j来记录日志吗?该方法存在于org.apache.log4j.Logger中。
可以使用此方法将异常堆栈记录为字符串
1 2 3 4 5 6 7 8 9
| public String stackTraceToString (Throwable e ) {
StringBuilder sb = new StringBuilder ();
for (StackTraceElement element : e. getStackTrace()) {
sb. append(element. toString());
sb. append("
");
}
return sb. toString();
} |