【问题标题】:How to replace the usage of System.out or System.err by a logger? [duplicate]如何用记录器替换 System.out 或 System.err 的使用? [复制]
【发布时间】:2015-01-25 21:03:05
【问题描述】:

我有一个简单的if 条件,我使用System.out.println。 我想知道如何修改代码以便用记录器替换 system.out 的这种用法?

if(myVar.getDate().equals(20141127) && myVar.getNumber().equals(1)) {
                System.out.println("");
}

有什么建议吗?

谢谢

【问题讨论】:

  • 看看log4j
  • 你在找System#setOut & System#setErr
  • @SubhrajyotiMajumder,我不确定我是否理解您的评论。
  • 短期内,您可以将 System.out 和 System.err 的输出重定向到一个文件,该文件将成为您的日志文件。然后,您可以着手使用 Log4J 或 SLF4J 调用替换这些调用,这将允许您在不同级别进行日志记录。甚至可以查看 AOP 为您添加登录。
  • 示例:System.setOut(new PrintStream(new FileOutputStream("file.txt")));

标签: java logging println system.out


【解决方案1】:

您可以使用一些记录器实用程序来记录详细信息。

看看Apache Log4j

日志记录很简单

log.debug("This is an debug message");

其中 log 是记录器的一个实例

对于示例代码,您可以查看tutorial

【讨论】:

  • 我应该在if 条件之外还是在内部创建记录器?
  • @hacks4life 你能看看我提到的教程吗?我已经对答案进行了编辑
  • 完成。我不明白getLogger() 方法中的内容。我应该在里面放什么?我自己的课吧?
  • @hacks4life 是的,把你的班级名字放在那里。这意味着记录器是特定于您的班级的。
  • 内置了一个简单直接的记录器(从 Java 7 开始):假设您正在记录的类名为“LoggingExample”,请执行以下操作:Logger logger = Logger.getLogger(LoggingExample.class.getSimpleName()); logger.log(Level.INFO, "Message to log"); 您将需要以下导入(某些 IDE 可以自动导入):import java.util.logging.Level; import java.util.logging.Logger;