Java中的printStackTrace与Logger框架
在Java中,异常处理可以通过多种方式完成。让我们区分使用日志框架的异常处理,如Java中的printStackTrace与Logger框架,java,exception,log4j,stack-trace,printstream,Java,Exception,Log4j,Stack Trace,Printstream,在Java中,异常处理可以通过多种方式完成。让我们区分使用日志框架的异常处理,如log4j或sl4j,这两种框架都可以将日志重定向到一个文件以处理异常 如果我们使用异常类方法printStackTrace()而不是Logger framework来处理异常,并通过将异常调用堆栈重定向到文件而不是标准错误输出/控制台来获取异常调用堆栈,那么现在,问题如下: 以后的实现是完全处理异常,还是只是将异常打印到文件中 在生产环境中,实现记录器框架优于printStacktrace(),原因是什么 提前谢谢
log4j
或sl4j
,这两种框架都可以将日志重定向到一个文件以处理异常
如果我们使用异常类方法printStackTrace()
而不是Logger framework来处理异常,并通过将异常调用堆栈重定向到文件而不是标准错误输出/控制台来获取异常调用堆栈,那么现在,问题如下:
printStacktrace()
,原因是什么如果要更改日志文件名、日志文件大小(旋转)或不同包或类的特定日志详细信息,可以通过修改配置轻松完成。有很多原因不应该使用
printStackTrace()
并且,让我们不要重新启动控制盘(特别注意,非常好的一个)
日志框架允许我们做很多事情(很多):
- 同时将我们的日志发送到不同的地方。大多数日志都带有多个附加器,可以执行控制台和文件输出等操作,并使用电子邮件或JMS发送日志消息,例如
- 自定义具有严重性级别、来源、筛选器密钥环等的消息
- 基于xml/properties文件的简单定制配置,无需更改Java代码
- 良好的异步处理能力,主要用于分布式系统
- 详细配置,设置记录异常的方式
- 等等
另外,考虑你的需要。
我通常看到两个都被实际使用。我见过“代码> Log4J < /Cl>”和“代码> SL4J < /Cl>使用,并且在捕获异常时,从<代码> PrimtStAccTrace()输出。已发送到记录器。谢谢Tim,但我想知道在生产中使用哪种选项,因为我们可以使用附加器,使用配置实现旋转是唯一比printstacktrace更有利的方法()“以后的实现”是什么意思在第一个问题中?这就像是比较保存到文件和使用数据库。如果你只做非常简单的事情,你可能看不到区别。这同样适用于这里。@Niklas by稍后我想说的是,我们是否使用printStackTrace()来反对使用记录器框架谢谢Niklas我想logger可以与printStackTrace()进行比较在打印日志消息方面,但不是在异常处理方面,因为这些都不是异常处理,而是对不同文件/流的简单日志…我是正确的?我不确定“异常处理”是什么意思。我个人使用术语“异常处理”当我实现业务逻辑时,当发生异常时该怎么办-中止业务逻辑/事务并显示特定错误,中止业务逻辑/事务并显示标准错误并记录详细信息,完成业务逻辑/事务并在后台记录详细信息,…-所有这些决策都无法完成b所以用我的话说,日志框架不能做异常处理。