1616
1717package nextflow.util
1818
19- import ch.qos.logback.core.encoder.Encoder
20- import ch.qos.logback.core.spi.FilterAttachable
21- import ch.qos.logback.core.spi.LifeCycle
22-
2319import static nextflow.Const.*
2420
2521import java.lang.reflect.Field
@@ -28,6 +24,7 @@ import java.nio.file.FileAlreadyExistsException
2824import java.nio.file.NoSuchFileException
2925import java.nio.file.Path
3026import java.util.concurrent.atomic.AtomicBoolean
27+ import java.util.concurrent.atomic.AtomicInteger
3128import java.util.regex.Pattern
3229
3330import ch.qos.logback.classic.Level
@@ -42,13 +39,16 @@ import ch.qos.logback.core.ConsoleAppender
4239import ch.qos.logback.core.CoreConstants
4340import ch.qos.logback.core.FileAppender
4441import ch.qos.logback.core.LayoutBase
42+ import ch.qos.logback.core.encoder.Encoder
4543import ch.qos.logback.core.encoder.LayoutWrappingEncoder
4644import ch.qos.logback.core.filter.Filter
4745import ch.qos.logback.core.joran.spi.NoAutoStart
4846import ch.qos.logback.core.rolling.FixedWindowRollingPolicy
4947import ch.qos.logback.core.rolling.RollingFileAppender
5048import ch.qos.logback.core.rolling.TriggeringPolicyBase
49+ import ch.qos.logback.core.spi.FilterAttachable
5150import ch.qos.logback.core.spi.FilterReply
51+ import ch.qos.logback.core.spi.LifeCycle
5252import ch.qos.logback.core.util.FileSize
5353import groovy.transform.CompileStatic
5454import groovy.transform.PackageScope
@@ -85,6 +85,10 @@ import org.slf4j.MarkerFactory
8585@CompileStatic
8686class LoggerHelper {
8787
88+ static volatile boolean aborted
89+
90+ static final AtomicInteger errCount = new AtomicInteger ()
91+
8892 static private Logger log = LoggerFactory . getLogger(LoggerHelper )
8993
9094 static public Marker STICKY = MarkerFactory . getMarker(' sticky' )
@@ -419,6 +423,10 @@ class LoggerHelper {
419423 return FilterReply . NEUTRAL ;
420424 }
421425
426+ // print to console only the very first error log and ignore the others
427+ if ( aborted && event. level== Level . ERROR && errCount. getAndIncrement()> 0 )
428+ return FilterReply . DENY ;
429+
422430 def logger = event. getLoggerName()
423431 def level = event. getLevel()
424432 for ( int i= 0 ; i< len; i++ ) {
0 commit comments