【问题标题】:Stack trace prints everything on one line in log file (Java)堆栈跟踪在日志文件中的一行打印所有内容 (Java)
【发布时间】:2013-07-25 16:20:24
【问题描述】:

我有一个程序可以创建一个日志文件,并输出抛出异常的堆栈跟踪。但是,堆栈跟踪仅打印在一行上。关于如何分解它的任何想法,而无需手动捕获异常并将其逐行分解?或者这只是 slf4j 记录到文本文件的方式?

日志文件

07-25-2013 11:11:27 [loggerError] - ERROR - [EXCEPTION] java.sql.SQLException, 
[STACK TRACE] [com.***.********.******.************.<init>(************.java:195), ***.***.*******.****.***********.main(***********.java:210)]

日志记录代码

 loggerError.error("[EXCEPTION] {}, \n[STACK TRACE] {}", e, e.getStackTrace());

使用 myEclipse,使用 slf4j 进行日志记录 任何帮助将不胜感激

【问题讨论】:

  • 你可以直接在.error()函数中添加一个异常,它会为你打印所有的,你为什么要手动做呢?
  • @fge 使用圆轮的乐趣在哪里?我听说对于某些路面,方形轮子更好......
  • 您如何查看日志?如果您使用的是 Windows,但日志是在 Linux 上创建的,并且您的查看器无法处理 \n(而不是 \r\n),您可能会看到这个。
  • 我正在将日志作为 txt 文件查看,我将其写入我的 C://
  • 只使用windows,所以没有问题。不想直接在 .error() 中使用异常,因为这是为了全局。不只记录一个类,使用我制作的方法(LoggerFunction),该方法具有记录代码,然后在另一个项目中需要它时导入/调用它。

标签: java logging stack trace slf4j


【解决方案1】:

你可以使用Java's Logger

使用 Logger,这应该可以解决问题:

Logger = logger = Logger.getLogger(<YourClass>);
logger.log(Level.SEVERE, <your message>, e);

如果你想以艰难的方式完成它,你应该记住getStackTrace() returns an array,所以你必须处理它。

【讨论】:

  • 我宁愿坚持使用 slf4j 而不是 Java 的记录器。不过,感谢您对 getStackTrace 的反馈。
【解决方案2】:

你应该这样使用它:

 loggerError.error("[EXCEPTION]", e);

【讨论】:

    猜你喜欢
    • 2012-04-19
    • 2015-07-01
    • 1970-01-01
    • 2015-07-27
    • 1970-01-01
    • 2021-09-10
    • 2012-09-04
    • 1970-01-01
    • 2019-05-19
    相关资源
    最近更新 更多