log4j日志文件怎么才能记录异常的详细信息,也就是e.printStackTrace()的信息?

时间:2020-12-20 21:49:30
log4j.properties
 log4j.rootLogger=ERROR,R  
 log4j.appender.R=org.apache.log4j.DailyRollingFileAppender  
 log4j.appender.R.File=D:/backup.log  
 log4j.appender.R.DatePattern  =  '.'yyyy-MM-dd  
 log4j.appender.R.layout=org.apache.log4j.PatternLayout  
 log4j.appender.R.layout.ConversionPattern=%-d{yyyy-MM-dd  HH:mm:ss}  [%c]-[%p]  %m%n 

在日志文件里面有输出:
2007-09-03  21:16:26  [com.TrackAction]-[ERROR]  java.net.ConnectException: Connection timed out: connect

而在控制台里面则有输出:
java.net.ConnectException: Connection timed out: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:364)
at java.net.Socket.connect(Socket.java:507)
at java.net.Socket.connect(Socket.java:457)
at java.net.Socket.<init>(Socket.java:365)
at java.net.Socket.<init>(Socket.java:178)
at com.kj133.action.TrackAction.init(TrackAction.java:79)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)


我怎么才能把详细信息输出到日志文件里面,请高手指教!
 

11 个解决方案

#1


log.error("输入你要描述的信息",e);
这样即可得到堆栈信息,不要使用log.error(e)和log.error(e.getStac*****)

#2


按照你的方法,我试了下,在日志文件里面还是没有详细的信息,并且按照你的方法,
输出的太多了信息,很多都不是我想要的。。。

#3


设置要输出日志的级别,你的是error,所以大于error的都打印了

#4


log.error(e.getMessage())

#5


按照楼上的说法,我改了改,在日志文件里面还只是显示信息
09:37:38,859 ERROR [ShowMaPAction] Connection refused: connect

并没有显示详细的信息

#6


log.error("输入你要描述的信息",e);要将异常对象作为第二个参数传递到log的方法中

#7


按照楼上的方法,改了改,还是不行,也没有输出详细的信息。。。

请问这是什么原因?

#8


catch后写log.error(e.printtrace)...之类的,信息就不会到console而是进日志

#9


可惜两年前我没有看到这个帖子,有种相见恨晚的感觉~_~
用这种log.XXX(Object obj,Thowable e)就可以把异常的堆栈信息写入日志了。。

#10


1楼写的是正确答案 
但有一点写错了,log.error(e.getStac*****) 这句话编译都不通过,不可能这么写的。

#11


logger.error(Object message, Throwable t)
正确

#1


log.error("输入你要描述的信息",e);
这样即可得到堆栈信息,不要使用log.error(e)和log.error(e.getStac*****)

#2


按照你的方法,我试了下,在日志文件里面还是没有详细的信息,并且按照你的方法,
输出的太多了信息,很多都不是我想要的。。。

#3


设置要输出日志的级别,你的是error,所以大于error的都打印了

#4


log.error(e.getMessage())

#5


按照楼上的说法,我改了改,在日志文件里面还只是显示信息
09:37:38,859 ERROR [ShowMaPAction] Connection refused: connect

并没有显示详细的信息

#6


log.error("输入你要描述的信息",e);要将异常对象作为第二个参数传递到log的方法中

#7


按照楼上的方法,改了改,还是不行,也没有输出详细的信息。。。

请问这是什么原因?

#8


catch后写log.error(e.printtrace)...之类的,信息就不会到console而是进日志

#9


可惜两年前我没有看到这个帖子,有种相见恨晚的感觉~_~
用这种log.XXX(Object obj,Thowable e)就可以把异常的堆栈信息写入日志了。。

#10


1楼写的是正确答案 
但有一点写错了,log.error(e.getStac*****) 这句话编译都不通过,不可能这么写的。

#11


logger.error(Object message, Throwable t)
正确