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 に答える