ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java log日志常见误区

2020-03-15 12:06:56  阅读:287  来源: 互联网

标签:24 java log 4.3 jar TestService RELEASE 日志


原因分析

很多程序员会无意间可能会这样打日志

logger.error(e);
logger.error(e.getMessage);
logger.error("错误信息:" + e);

看下logger.error代码就知道error有2个重载方法

public void error(String msg);
public void error(String msg, Throwable t);

上面的代码只有一个参数,因此都会被认为是调用第一种方法,这样造成的结果就是e将会被自动转成String类型,从而丢失的许多错误信息、堆栈信息。

错误示例

如下堆栈等信息基本上全丢失了,即不知道哪个方法调用了service产生的错误,也不知道错误的原因,更不知道代码抛出异常的行数。生产一旦出现问题,根本无从排起,总不能打开电脑debug吧?就像医生问病人哪里不舒服,病人答浑身不舒服,我要是医生当场我就想打人

logger.error("第x部分出错 " + e);

05:10:05.920 [startQuartz_Worker-8] ERROR com.cmx.demo.data.outter.TestService - 第1部分错误

正确示例

而正确的日志,我们即可以知道发生错误的原因,抛出异常的行数,同时也能获悉堆栈调用的关系,这样排查生产问题才有解决的可能性。医生还是问病人哪里不舒服,病人答我因为某某原因,导致左下方腰酸,这下清楚多了

logger.error("第x部分出错", e);

05:10:05.920 [startQuartz_Worker-8] ERROR com.cmx.demo.data.outter.TestService - 当前文件名:DMDXXX.csv 第x部分出错
com.cmx.common.exception.AppException: 第x部分出错
	at com.cmx.demo.data.outter.TestService.execAnalyze(TestService.java:169) ~[TestService.class:?]
	at com.cmx.demo.data.outter.TestService.execAnalyze(TestService.java:81) [TestService.class:?]
	at com.cmx.demo.data.outter.TestService$$FastClassBySpringCGLIB$$4538247f.invoke(<generated>) [TestService.class:?]
	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) [spring-core-4.3.24.RELEASE.jar:4.3.24.RELEASE]
	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:736) [spring-aop-4.3.24.RELEASE.jar:4.3.24.RELEASE]
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) [spring-aop-4.3.24.RELEASE.jar:4.3.24.RELEASE]
	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99) [spring-tx-4.3.24.RELEASE.jar:4.3.24.RELEASE]
	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:283) [spring-tx-4.3.24.RELEASE.jar:4.3.24.RELEASE]
	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96) [spring-tx-4.3.24.RELEASE.jar:4.3.24.RELEASE]
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) [spring-aop-4.3.24.RELEASE.jar:4.3.24.RELEASE]
	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:671) [spring-aop-4.3.24.RELEASE.jar:4.3.24.RELEASE]
	at com.cmx.demo.data.outter.TestService$$EnhancerBySpringCGLIB$$24bd9037.execAnalyze(<generated>) [TestService.class:?]
	at com.cmx.demo.data.outter.job.CyberAnalyzeJob.invoke(CyberAnalyzeJob.java:29) [CyberAnalyzeJob.class:?]
	at com.cmx.common.job.BaseJob.execJob(BaseJob.java:57) [BaseJob.class:?]
	at sun.reflect.GeneratedMethodAccessor142.invoke(Unknown Source) ~[?:?]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_60]
	at java.lang.reflect.Method.invoke(Method.java:497) ~[?:1.8.0_60]
	at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:265) [spring-core-4.3.24.RELEASE.jar:4.3.24.RELEASE]
	at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:257) [spring-context-support-4.3.24.RELEASE.jar:4.3.24.RELEASE]
	at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:75) [spring-context-support-4.3.24.RELEASE.jar:4.3.24.RELEASE]
	at org.quartz.core.JobRunShell.run(JobRunShell.java:202) [quartz-2.2.3.jar:?]
	at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573) [quartz-2.2.3.jar:?]
Caused by: java.io.FileNotFoundException: File D:\xxx\DMDXXX.csv does not exist.
	at com.csvreader.CsvReader.<init>(Unknown Source) ~[javacsv.jar:?]
	at com.cmx.demo.data.outter.TestService.execAnalyze(TestService.java:157) ~[TestService.class:?]
	... 21 more

标签:24,java,log,4.3,jar,TestService,RELEASE,日志
来源: https://blog.csdn.net/chaitoudaren/article/details/104833272

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有