2016-01-06 83 views
1

对于一个快速和非常简单的调试我在Java中使用方法来打印参数安慰并且原样返回

System.out.println(String.format("%s/%s", a, b)); 

它工作正常,但在情况下,当我很快就需要看看什么东西被传递到其他一些方法。然后,我需要临时变量:

String temp = String.format("%s/%s", a, b); 
System.out.println(temp); 
act(temp); 

我不知道是否有任何方便的功能类似下面trace,我可以静态从任何流行的库导入?

act(trace(String.format("%s/%s", a, b))); 

这将等同于了XQuery trace - 只是打印到System.out内容和返回参数不变。

当然,我可以为此创建自己的util,但是我每天都在处理多个项目,也许已经有一些可以使用的东西了?

我知道我可以在这里使用更复杂的方法,但正如我所说的,我需要它只是为了不时地进行肮脏的调试。应该很容易添加和删除。

+0

对于是否适合调试System.out,你可能会得到不同的意见。(例如,它只是一个拐杖,使用适当的单元测试;它不应该存在于生产代码中;它非常适合调试等等)。然而,我不知道任何“内置”的东西都是你想要的。也许创建一个调试帮手库并在整个项目中引用它。 –

+0

@Cᴏʀʏ我知道'System.out'对于调试来说是不好的选择,但是我经常这样做,尤其是当我想看到来自多个调用的结果时。当然''System.out'几乎不会存在于生产代码中。 –

+0

你应该用System.out.printf(“%s /%s%n”,a,b)替换'System.out.println(String.format(“%s /%s”,a,b))' )' – Andreas

回答

1

对于类似的情况,您应该使用日志库(Java built-in library)或第三方库(如log4jlogback)。

然后,您需要的是将跟踪级别的日志记录调用添加为要监视的每种方法中的第一条语句。常见的日志消息可能类似于Entering myMethod(4, 2),其中42是实际参数值。

通过这种方式,您可以使用配置启用/禁用日志详细信息级别,而不必更新/编译/打包/安装代码。