0

我有一个循环。我希望每执行 20 (100) 次查看一些日志。到目前为止,我有一些相当复杂的代码来做到这一点,

for( int i = 0; i < aValues.length; ++i )
{
    if( c_LOG.isTraceEnabled() && ( ( i % 20 ) == 0 ) )
    {
        c_LOG.trace( "Converted item (" + i + ") " );
    }
    .....
}  

这段代码可以满足我的要求,但是代码很长(4 行),并且类似的代码出现了很多次。我不能将它打包到一个方法中,因为这会在日志输出中搞砸方法名称。( log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{3}:(%M %L) %m%n) 有什么好的方法可以解决这个问题吗?

4

1 回答 1

1

最简单的解决方案是重构:

    for (int i = 0; i < aValues.length; ++i) {
        if (shouldLog(i)) {
            c_LOG.trace("Converted item (" + i + ")");
        }
        ....
    } 

    ....

public boolean shouldLog(int n) {
    return shouldLog(n, 20);
}

public boolean shouldLog(int n, int mod) {
    return c_LOG.isTraceEnabled() && ((n % mod) == 0);
}
于 2012-09-27T18:05:50.767 回答