[ https://issues.apache.org/jira/browse/LOG4J2-3396?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17496251#comment-17496251 ]
Ralph Goers commented on LOG4J2-3396: ------------------------------------- Yes, Gary is mistaken. MongoDB may log to SLF4J but then that is bridged to Log4j which then tries to log it to MongoDB and it all starts over again. > ERROR Recursive call to appender mongodb with spring boot root logger > --------------------------------------------------------------------- > > Key: LOG4J2-3396 > URL: https://issues.apache.org/jira/browse/LOG4J2-3396 > Project: Log4j 2 > Issue Type: Question > Components: MongoDB > Affects Versions: 2.17.1 > Reporter: Omer U > Priority: Major > > If mongodb4 logger is used as root logger in basic spring boot rest > application, it causes some sort of recursion error. And stalls startup. > below causes recursive call error > {code:xml} > <Root level="INFO"> > <AppenderRef ref="Console" /> > <AppenderRef ref="mongodb" /> > </Root> > {code} > while following does not produce error > {code:xml} > <Loggers> > <Root level="INFO"> > <AppenderRef ref="Console" /> > </Root> > <Logger name="com.example" level="TRACE"> > <AppenderRef ref="mongodb" > > </Logger> > <Logger name="io.grpc" level="INFO"/> > </Loggers> > {code} > > {noformat} > 2022-02-07 23:35:43,487 cluster-ClusterId{value='620182632ff6a504abdb6699', > description='null'}-localhost:27017 ERROR Recursive call to appender mongodb > 23:36:13.481 [st:27017] INFO o.m.d.cluster - Cluster description not yet > available. Waiting for 30000 ms before timing out > 2022-02-07 23:36:13,480 > cluster-rtt-ClusterId{value='620182632ff6a504abdb6697', > description='null'}-localhost:27017 ERROR Unable to write to database > [noSqlManager{ description=mongodb, bufferSize=0, provider=MongoDb4Provider > [connectionString=mongodb://localhost:27017/tombolog.mongo4test, > collectionSize=1073741824, isCapped=true, > mongoClient=com.mongodb.client.internal.MongoClientImpl@2f67a4d3, > mongoDatabase=com.mongodb.client.internal.MongoDatabaseImpl@5e3f861] }] for > appender [mongodb]. > org.apache.logging.log4j.core.appender.AppenderLoggingException: Failed to > write log event to MongoDB due to error: Timed out after 30000 ms while > waiting to connect. Client view of cluster state is {type=UNKNOWN, > servers=[{address=localhost:27017, type=UNKNOWN, state=CONNECTING}] > {noformat} > full log4j2.xml file > {code:xml} > <?xml version="1.0" encoding="UTF-8"?> > <Configuration status="INFO"> > <Appenders> > <Console name="Console" target="SYSTEM_OUT"> > <PatternLayout pattern="%d{HH:mm:ss.SSS} [%.8t] %-5level %logger{1.} - > %msg%n"/> > </Console> > <NoSql name="mongodb"> > <MongoDb4 capped="true" collectionSize="1073741824" > connection="${env:MONGO_LOG_URI:-mongodb://localhost:27017/log.mongo4test}" /> > </NoSql> > </Appenders> > <Loggers> > <Root level="INFO"> > <AppenderRef ref="Console" /> > <AppenderRef ref="mongodb" /> > </Root> > <Logger name="com.example" level="TRACE"/> > <Logger name="io.grpc" level="INFO"/> > </Loggers> > </Configuration> > {code} > build.gradle > {code:groovy} > plugins { > id 'org.springframework.boot' version '2.6.3' > id 'io.spring.dependency-management' version '1.0.11.RELEASE' > id 'java' > } > group = 'com.example' > version = '0.0.1-SNAPSHOT' > sourceCompatibility = '11' > ext ['log4j2.version'] = '2.17.2-SNAPSHOT' > repositories { > mavenCentral() > maven { > url "http://repository.apache.org/content/repositories/snapshots/" > } > } > dependencies { > implementation group: 'org.apache.logging.log4j', name: > 'log4j-mongodb4', version: '2.17.2-SNAPSHOT' > implementation 'org.springframework.boot:spring-boot-starter-web' > implementation 'org.springframework.boot:spring-boot-starter-log4j2' > testImplementation 'org.springframework.boot:spring-boot-starter-test' > } > configurations { > all { > exclude group: 'org.springframework.boot', module: > 'spring-boot-starter-logging' > exclude group: 'org.springframework.boot', module: > 'logback-classic' > } > } > tasks.named('test') { > useJUnitPlatform() > } > {code} > is this normal behavior? I have tried to reproduce this without spring boot > without any success. > Any ideas? -- This message was sent by Atlassian Jira (v8.20.1#820001)