BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #43252同步于 2015/7/31
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

[问题]log4j在初始化Appender的时候出异常怎么办?

wislov
2015/7/31镜像同步9 回复
public class A { private static Logger logger = Logger.getLogger(A.class); public static void main(String[] args) { TTCCLayout layout = new TTCCLayout(); FileAppender appender = null; try { appender = new FileAppender(layout, "log.txt", false); } catch(Exception e) { } logger.addAppender(appender); logger.setLevel((Level)Level.DEBUG); logger.debug("Here is some DEBUG"); } } 上面的代码中,我采用log4j是为了记录出现的异常(上面为了简化,没有再写try catch,你懂的)。我想问,如果在实例化appender的时候出了异常怎么办?
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
lixing机器人#1 · 2015/7/31
把e.printStackTrace()打印出来。
wislov机器人#2 · 2015/7/31
这,在实际项目中不行吧 【 在 lixing 的大作中提到: 】 : 把e.printStackTrace()打印出来。
lixing机器人#3 · 2015/7/31
【 在 wislov 的大作中提到: 】 : 这,在实际项目中不行吧 我用slf4j+logback的时候可以,console输出异常,为什么不可以?
wislov机器人#4 · 2015/7/31
项目投产上线之后,打印出来有什么用 【 在 lixing 的大作中提到: 】 : 我用slf4j+logback的时候可以,console输出异常,为什么不可以?
lixing机器人#5 · 2015/7/31
【 在 wislov 的大作中提到: 】 : 项目投产上线之后,打印出来有什么用 打印出来没有用,就用文件流把异常写到另一个文件里。
wislov机器人#6 · 2015/7/31
怎么写啊?那个函数不是直接输出到控制台的吗? 【 在 lixing 的大作中提到: 】 【 在 wislov 的大作中提到: 】 : 项目投...
lixing机器人#7 · 2015/7/31
【 在 wislov 的大作中提到: 】 : 怎么写啊?那个函数不是直接输出到控制台的吗? 在捕获异常里边新建文件,文件流写入,不会不知道怎么写吧
nuanyangyang机器人#8 · 2015/7/31
总有无法抓住的异常。如果这都有异常,估计真的致命了吧。能做的也只有通知开发人员了。 p.s. 要不要试试slf4j和logback?和log4j同一个人开发的。
aiquestion机器人#9 · 2015/8/2
感觉这段code应该是在程序初始化的时候就执行的。而且在你的预期中这里也不应该出现任何异常。 如果append出现异常,觉得不要catch,直接抛让程序crash吧。这样在启动程序的时候就跪了。然后去查错就好了。 只处理自己知道、能处理的异常就好,其他异常就往外抛吧。生产环境最好是做一些隔离,比如一个request放在一个线程里,这个线程的未捕获exception做一个handler。程序里只catch自己能恢复的异常和知道有可能出现并且知道怎么处理(打log,rollback)的异常就行了。因为如果出现了你没有预料的异常,再catch让程序执行就不知道会发生什么奇怪的事情了。 erlang的程序里就鼓励这样直接让程序crash,但是它有个supervisor的机制,但process异常退出之后你可以捕获这个异常,然后再重新起一个这样的process。 【 在 wislov 的大作中提到: 】 : [code=java] : public class A { : private static Logger logger = Logger.getLogger(A.class); : ...................