Java中的printStackTrace与Logger框架

Java中的printStackTrace与Logger框架,java,exception,log4j,stack-trace,printstream,Java,Exception,Log4j,Stack Trace,Printstream,在Java中,异常处理可以通过多种方式完成。让我们区分使用日志框架的异常处理,如log4j或sl4j,这两种框架都可以将日志重定向到一个文件以处理异常 如果我们使用异常类方法printStackTrace()而不是Logger framework来处理异常,并通过将异常调用堆栈重定向到文件而不是标准错误输出/控制台来获取异常调用堆栈,那么现在,问题如下: 以后的实现是完全处理异常,还是只是将异常打印到文件中 在生产环境中,实现记录器框架优于printStacktrace(),原因是什么 提前谢谢

在Java中,异常处理可以通过多种方式完成。让我们区分使用日志框架的异常处理,如
log4j
sl4j
,这两种框架都可以将日志重定向到一个文件以处理异常

如果我们使用异常类方法
printStackTrace()
而不是Logger framework来处理异常,并通过将异常调用堆栈重定向到文件而不是标准错误输出/控制台来获取异常调用堆栈,那么现在,问题如下:

  • 以后的实现是完全处理异常,还是只是将异常打印到文件中
  • 在生产环境中,实现记录器框架优于
    printStacktrace()
    ,原因是什么
  • 提前谢谢

    至2) 日志框架不是更好的文件处理程序,但是,例如,从代码中提取日志的配置。因此,当您更改配置(例如,开发和生产日志的其他详细级别)时,您不必更改代码-您只需在每个测试阶段使用其他日志框架配置。
    如果要更改日志文件名、日志文件大小(旋转)或不同包或类的特定日志详细信息,可以通过修改配置轻松完成。

    有很多原因不应该使用
    printStackTrace()
    并且,让我们不要重新启动控制盘(特别注意,非常好的一个)

    日志框架允许我们做很多事情(很多):

    • 同时将我们的日志发送到不同的地方。大多数日志都带有多个附加器,可以执行控制台和文件输出等操作,并使用电子邮件或JMS发送日志消息,例如
    • 自定义具有严重性级别、来源、筛选器密钥环等的消息
    • 基于xml/properties文件的简单定制配置,无需更改Java代码
    • 良好的异步处理能力,主要用于分布式系统
    • 详细配置,设置记录异常的方式
    • 等等
    特别是定制appender功能非常强大,因为我们可以将日志发送到非文件目的地,如、、等,就像现在许多公司已经在分析和监控其生产系统一样


    另外,考虑你的需要。

    我通常看到两个都被实际使用。我见过“代码> Log4J < /Cl>”和“代码> SL4J < /Cl>使用,并且在捕获异常时,从<代码> PrimtStAccTrace()输出。已发送到记录器。谢谢Tim,但我想知道在生产中使用哪种选项,因为我们可以使用附加器,使用配置实现旋转是唯一比printstacktrace更有利的方法()“以后的实现”是什么意思在第一个问题中?这就像是比较保存到文件和使用数据库。如果你只做非常简单的事情,你可能看不到区别。这同样适用于这里。@Niklas by稍后我想说的是,我们是否使用printStackTrace()来反对使用记录器框架谢谢Niklas我想logger可以与printStackTrace()进行比较在打印日志消息方面,但不是在异常处理方面,因为这些都不是异常处理,而是对不同文件/流的简单日志…我是正确的?我不确定“异常处理”是什么意思。我个人使用术语“异常处理”当我实现业务逻辑时,当发生异常时该怎么办-中止业务逻辑/事务并显示特定错误,中止业务逻辑/事务并显示标准错误并记录详细信息,完成业务逻辑/事务并在后台记录详细信息,…-所有这些决策都无法完成b所以用我的话说,日志框架不能做异常处理。