There are other ways of controlling the Log4j2 Status Logger other than adding test dependencies.
For instance, you can: 1. Set the JVM System property org.apache.logging.log4j.simplelog.StatusLogger.level to "OFF". 2. Theoretically, when Lo4j2 finds a log4j2 or log4j2-test Properties, YAML, JSON or XML file on the classpath, it should honor the following configuration setting, e.g. in log4j2.xml: <Configuration status="OFF"> This is described in the Log4j documentation at https://logging.apache.org/log4j/2.x/manual/configuration.html in section "*Status Messages*". Also see the section "*Automatic Configuration*" for more details on how Log4j2 resolves configuration metadata (e.g. log4j2.xml). 3. There are also programmatical ways to control status logging by acquiring the StatusLogger and removing all StatusListeners prior to the Log4j2 logging system being initialized, or alternatively setting a no-op StatusListener implementation, which you would need to implement yourself since, seemingly, *Log4j2* does not provide an implementation unlike *Logback*. (e.g. [1]) StatusLogger.getLogger().getListeners().forEach(StatusLogger.getLogger ()::removeListener); Quickly experimenting, the only approach I got working in my *Spring Boot* application using Apache Geode was #1. I suspect there was other things running interference, but I did not investigate further. Anyway, I would error on the side of caution and use 1 of the approaches above rather than simply throwing in another dependency, testRuntime or otherwise. It is too easy for that to be inadvertently and incorrectly changed by some maintainer later on. $0.02 -j [1] https://github.com/spring-projects/spring-boot-data-geode/blob/master/spring-geode-docs/src/main/resources/logback.xml#L4 On Tue, Oct 22, 2019 at 9:57 AM Xiaojian Zhou <gz...@pivotal.io> wrote: > I hit this problem in PR. I am just curious why it did not happen before? > > > On Tue, Oct 22, 2019 at 9:44 AM Kirk Lund <kl...@apache.org> wrote: > > > I'm ok with adding log4j-core to the testRuntime for all unit test > targets > > to prevent the ERROR message. Any other input? > > > > On Fri, Oct 18, 2019 at 3:10 PM John Blum <jb...@pivotal.io> wrote: > > > > > Be careful to only add logging dependencies as testRuntime > dependencies. > > > Do not add any logger implementation/provider (e.g. log4j-core, or > > > otherwise) in either the compile-time or runtime scope. > > > > > > This also means that when users are using and running Apache Geode > > > applications (regardless of context), they will need to explicitly > choose > > > and declare a logging implementation, otherwise they will see the same > > > ERROR message logged. For example, when using Spring Boot, users > > > would declare a runtime dependency on > > > org.springframework.boot:spring-boot-starter-logging. This uses > Logback > > as > > > the logging provider and adapts Log4j with SLF4J using the bridge. > > > > > > To make matters worse, unfortunately, this message is logged by the > > logging > > > facade as an error when it should rather be logged as WARN instead, or > > > arguably less. > > > > > > Technically, you should also be able to quiet down the "internal" > Logging > > > facade messaging using a no-op status listener, e.g. ... > > > > > > > > > > > > https://github.com/spring-projects/spring-boot-data-geode/blob/master/spring-geode-tests/smoke-tests/spring-initializer/src/test/resources/logback.xml#L4 > > > > > > I not sure what that is for Log4j2 (but there should be an equivalent). > > > > > > > > > > > > On Fri, Oct 18, 2019 at 1:26 PM Bruce Schuchardt < > bschucha...@pivotal.io > > > > > > wrote: > > > > > > > Not long ago changes were made to the sub-projects that introduced a > > lot > > > > of build noise. In gradle builds we see a lot of this: > > > > > > > > ERROR StatusLogger Log4j2 could not find a logging implementation. > > Please > > > > add log4j-core to the classpath. Using SimpleLogger to log to the > > > console... > > > > > > > > and in IntelliJ unit test runs we get this: > > > > > > > > ERROR StatusLogger No Log4j 2 configuration file found. Using default > > > > configuration (logging only errors to the console), or user > > > > programmatically provided configurations. Set system property > > > > 'log4j2.debug' to show Log4j 2 internal initialization logging. > > > Seehttps:// > > > > logging.apache.org/log4j/2.x/manual/configuration.html for > > instructions > > > > on how to configure Log4j 2 > > > > > > > > That's really annoying and it looks like Geode is broken. To fix > this > > > > it was suggested that "we would have to add log4j-core to the > classpath > > > > of unit tests to get log4j-api to stop complaining". > > > > > > > > I think this should be done. Any objections? > > > > > > > > > > > > > > > > > > -- > > > -John > > > john.blum10101 (skype) > > > > > > -- -John john.blum10101 (skype)