Java修改控制台输出以进行调试

时间:2015-04-01 04:56:42

标签: java debugging system.out

我最近被大量的消息打印到我的控制台而不知道它们来自哪里。

有没有办法轻松制作类似于system.out.println的自定义类,它将打印出自定义消息以及

  • 打印消息来自的代码位置
  • 可按重要性级别进行切换
  • 使用不痛苦
  • 其他有用的东西?

3 个答案:

答案 0 :(得分:1)

Apache,确实提供了一个日志记录类,以及它的不同级别。使用这些时,您实际上可以指定需要打印的级别,它还可以帮助您识别调用它的位置。

以下面的行为例,

[2015-03-31 12:51:29,426] DEBUG {org.springframework.beans.factory.support.DefaultListableBeanFactory} - 检索bean的依赖bean'(内部bean)#1b534211#2':[org.springframework .web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver#0] {org.springframework.beans.factory.support.DefaultListableBeanFactory}

它说,它于12月51日在3月31日登陆。记录器用于调试某些逻辑,它是从org.springframework.beans.factory.support.DefaultListableBeanFactory类调用的。

答案 1 :(得分:1)

  

有没有办法轻松制作类似的自定义类   system.out.println将打印出自定义消息和

print the location of code the message is coming from
be toggleable by importance level
not be a pain to use
other helpful stuff?

您基本上只是描述了记录器的用处。 Java有很好的日志框架,比如log4j,logback等。可以选择任何一个像sl4j这样的外观。使用sl4j日志记录就像System.out.println()一样简单。

只需创建一个记录器实例

private static final Logger log = LoggerFactory.getLogger(YourClassName.class);

然后像这样打印日志

log.debug("Some log");

您还可以编写具有不同级别的参数化日志消息(级别用于表示重要性级别)

log.debug("Username={}", username);
log.trace("Username={}", username);
log.warn("Username={}", username);

这可能是一个开始的好地方 http://www.javacodegeeks.com/2012/04/using-slf4j-with-logback-tutorial.html

答案 2 :(得分:0)

也许您可以使用OutputStream来自定义控制台中的输出