运行时异常如何使用log4j进行管理

若圆之意 2016-04-05 03:10:18
当在程序中出现异常时,jvm在默认情况下会将异常信息打印到控制台。如下:
D:\springlog>java -Djava.util.logging.config.file=log4j.properties -Djava.util.logging.manager=org.apache.log4j.LogManager -Djava.ext.dirs=. com.LogTest
log4j:ERROR Could not find value for key log4j.appender.Console
log4j:ERROR Could not instantiate appender named "Console".
Exception in thread "main" java.lang.ArithmeticException: / by zero
at com.PrintLogService.printLog(PrintLogService.java:12)
at com.LogTest.main(LogTest.java:18)
而生成的日志文件中却没有相应的异常信息,异常代码如下:

public void printLog(){
logger.info("*************方法开始****************");
int i = 1 / 0;
System.out.println(i);
logger.info("*************方法结束****************");
}

文件信息如下:
2016-04-05 14:34:28,434 [main] DEBUG [org.springframework.core.env.PropertySourcesPropertyResolver] - getProperty("spring.liveBeansView.mbeanDomain", String)
2016-04-05 14:34:28,435 [main] DEBUG [org.springframework.core.env.PropertySourcesPropertyResolver] - Searching for key 'spring.liveBeansView.mbeanDomain' in [systemProperties]
2016-04-05 14:34:28,435 [main] DEBUG [org.springframework.core.env.PropertySourcesPropertyResolver] - Searching for key 'spring.liveBeansView.mbeanDomain' in [systemEnvironment]
2016-04-05 14:34:28,435 [main] DEBUG [org.springframework.core.env.SystemEnvironmentPropertySource] - PropertySource [systemEnvironment] does not contain 'spring.liveBeansView.mbeanDomain'
2016-04-05 14:34:28,435 [main] DEBUG [org.springframework.core.env.SystemEnvironmentPropertySource] - PropertySource [systemEnvironment] does not contain 'spring_liveBeansView_mbeanDomain'
2016-04-05 14:34:28,436 [main] DEBUG [org.springframework.core.env.SystemEnvironmentPropertySource] - PropertySource [systemEnvironment] does not contain 'SPRING.LIVEBEANSVIEW.MBEANDOMAIN'
2016-04-05 14:34:28,436 [main] DEBUG [org.springframework.core.env.SystemEnvironmentPropertySource] - PropertySource [systemEnvironment] does not contain 'SPRING_LIVEBEANSVIEW_MBEANDOMAIN'
2016-04-05 14:34:28,436 [main] DEBUG [org.springframework.core.env.PropertySourcesPropertyResolver] - Could not find key 'spring.liveBeansView.mbeanDomain' in any property source. Returning [null]
2016-04-05 14:34:28,436 [main] DEBUG [org.springframework.beans.factory.support.DefaultListableBeanFactory] - Returning cached instance of singleton bean 'lifecycleProcessor'
2016-04-05 14:34:28,436 [main] DEBUG [org.springframework.context.support.ClassPathXmlApplicationContext] - Publishing event in org.springframework.context.support.ClassPathXmlApplicationContext@7402d14a: org.springframework.context.event.ContextStartedEvent[source=org.springframework.context.support.ClassPathXmlApplicationContext@7402d14a: startup date [Tue Apr 05 14:34:28 CST 2016]; root of context hierarchy]
2016-04-05 14:34:28,436 [main] DEBUG [org.springframework.beans.factory.support.DefaultListableBeanFactory] - Returning cached instance of singleton bean 'printlog'
2016-04-05 14:34:28,436 [main] INFO [com.PrintLogService] - *************方法开始****************
...全文
227 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
若圆之意 2016-04-25
  • 打赏
  • 举报
回复
这个不是,这是jvm的在处理不同错误日志时的问题,当出现错误日志时log4j的文件输出并没有处理jvm的System.error这个输出,所以在日志文件中是没有错误日志打印的。只有正常的日志输出。这里需要对log4j日志文件输出进行重写,集合Console和File这两个的日志输出方式。
  • 打赏
  • 举报
回复
应该是显示层级的关系吧

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧