GitHub user jbisotti edited a comment on the discussion:
java.lang.IllegalArgumentException: The `GraalVmProcessor` annotation processor
is missing the required `log4j.graalvm.groupId` and `log4j.graalvm.artifactId`
options
Apologies; I misspoke yesterday.
We recently added a unit test to verify the contents of a log message,
including the context keys/values. I likely missed something but I couldn't
find an easy way to do that. I ended up borrowing `ListAppender` from
`log4j-core-test` so our test code did in fact contain an `@Plugin`. I've now
removed this and added `log4j-core-test` as a `test` dependency.
Also, we intentionally had `log4j-core` as a `compile` dependency because the
code includes a few CLI utilities and on of them was using
`Configurator.initialize(...)`. I've now removed this and changed it to a
`runtime` dependency.
With the the two changes above, and not doing anything special to deal with the
GraalVM annotation processor issue, my code now compiles cleanly and the tests
run successfully.
That said, adding the `log4j-core-test` dependency was not as clean as one
would hope. It has a lot of undesirable transitive dependencies (Maven?
Spring?). Literally, all I needed was `ListAppender`.
```xml
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core-test</artifactId>
<version>${log4j.version}</version>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>com.google.code.java-allocation-instrumentor</groupId>
<artifactId>java-allocation-instrumentor</artifactId>
</exclusion>
<exclusion>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
</exclusion>
<exclusion>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</exclusion>
<exclusion>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
</exclusion>
<exclusion>
<groupId>org.awaitility</groupId>
<artifactId>awaitility</artifactId>
</exclusion>
<exclusion>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest</artifactId>
</exclusion>
<exclusion>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
</exclusion>
<exclusion>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-commons</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.maven</groupId>
<artifactId>maven-core</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.maven</groupId>
<artifactId>maven-model</artifactId>
</exclusion>
<exclusion>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-utils</artifactId>
</exclusion>
<exclusion>
<groupId>org.junit-pioneer</groupId>
<artifactId>junit-pioneer</artifactId>
</exclusion>
<exclusion>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
</exclusion>
</exclusions>
</dependency>
```
Like I said, I likely missed something; however, it would be great if there
were some small/simple artifact with minimal dependencies with the aim of
making unit testing logging easier. Unit testing logging likely isn't an ideal
thing to do in general but sometimes it's necessary.
Thanks!
GitHub link:
https://github.com/apache/logging-log4j2/discussions/3755#discussioncomment-13782241
----
This is an automatically sent email for [email protected].
To unsubscribe, please send an email to: [email protected]