Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用log4j记录每20次发生的事件?_Java_Logging_Log4j - Fatal编程技术网

Java 如何使用log4j记录每20次发生的事件?

Java 如何使用log4j记录每20次发生的事件?,java,logging,log4j,Java,Logging,Log4j,我有一个循环。我希望每20(100)次执行都能看到一些日志。到目前为止,我有一些相当复杂的代码来实现这一点 for( int i = 0; i < aValues.length; ++i ) { if( c_LOG.isTraceEnabled() && ( ( i % 20 ) == 0 ) ) { c_LOG.trace( "Converted item (" + i + ") " ); } ..... } for(

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

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

这段代码符合我的要求,但代码很长(4行),类似的代码出现过很多次。我无法将其打包到方法中,因为这样会在日志输出中扭曲方法名称。(
log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:MM:ss}%p%c{3}:(%M%L)%M%n
)有什么好办法解决这个问题吗

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

    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);
}
for(int i=0;i
请参阅。这基本上就是把状态测试作为一种新的方法提取出来。现在还不错。谢谢