This is an automated email from the ASF dual-hosted git repository. pkarwasz pushed a commit to branch feature/revamp-minimal-profiles in repository https://gitbox.apache.org/repos/asf/logging-log4j-samples.git
commit e5f459b0bfbcc793bfda17c49e7a8686b258a892 Author: Piotr P. Karwasz <[email protected]> AuthorDate: Tue Oct 22 17:33:51 2024 +0200 Add customized GraalVM configurations By using the new `log4j-convert-plugin-descriptor` tool introduced in apache/logging-log4j-transform#139 this PR: 1. Adds a customized `use-log4j-core-jtl-minimal` GraalVM profile that only includes the plugins required by JSON Template Layout. 2. Generates the existent `use-log4j-core-minimal` GraalVM profile using a custom `Log4j2Plugins.json` file. The previous profile was edited manually. Closes apache/logging-log4j2#2834. --- log4j-samples-graalvm/README.adoc | 100 +- log4j-samples-graalvm/pom.xml | 310 +++-- .../src/reachability-metadata/jul/index.json | 4 - .../java.util.logging}/reflect-config.json | 0 .../java.util.logging}/resource-config.json | 2 +- .../log4j-core-jtl-minimal/Log4j2Plugins.json | 535 ++++++++ .../log4j-core}/reflect-config.json | 392 ++++-- .../log4j-layout-template-json/reflect-config.json | 288 +++++ .../log4j/core/config/plugins/Log4j2Plugins.dat | Bin 0 -> 6630 bytes .../resources/log4j2.component.properties | 18 + .../resources/log4j2.component.properties | 18 + .../log4j-core-minimal/Log4j2Plugins.json | 747 +++++++++++ .../log4j-core/reflect-config.json | 1320 ++++++++++++++++++++ .../log4j/core/config/plugins/Log4j2Plugins.dat | Bin 0 -> 8517 bytes .../logback-classic}/resource-config.json | 2 +- .../src/reachability-metadata/minimal/index.json | 9 - .../minimal/log4j-core/2.24.0/index.json | 4 - .../minimal/log4j-core/2.24.0/resource-config.json | 22 - .../minimal/log4j-core/index.json | 11 - .../simple/resources/log4j2.component.properties | 19 + 20 files changed, 3499 insertions(+), 302 deletions(-) diff --git a/log4j-samples-graalvm/README.adoc b/log4j-samples-graalvm/README.adoc index 59c44f2..0219412 100644 --- a/log4j-samples-graalvm/README.adoc +++ b/log4j-samples-graalvm/README.adoc @@ -19,11 +19,11 @@ limitations under the License. This project shows how to generate a native image using GraalVM. -In order to use it: +To use it: -. set the `JAVA_HOME` environment variable to the path of a GraalVM installation, -. set the current working directory to the folder containing this file, -. generate the artifact locally with: +. Set the `JAVA_HOME` environment variable to the path of a GraalVM installation, +. Set the current working directory to the folder containing this file, +. Generate the artifact locally with: + [source,shell] ---- @@ -32,24 +32,42 @@ In order to use it: + where `<backend>` can be: +`simple`:: +This profile uses `SimpleLogger` as logging backend. + +`jul`:: +This profile uses `java.util.logging` as logging backend. + +`logback`:: +This profile uses Logback as logging backend. + `log4j-core`:: This profile uses Log4j Core as logging backend with its out-of-the-box reachability metadata. +It uses +https://logging.apache.org/log4j/2.x/manual/pattern-layout.html[Pattern Layout] +to format log events. `log4j-core-jtl`:: -This profile uses Log4j Core as logging backend with the addition of JSON Template Layout. +This profile uses Log4j Core as logging backend with its out-of-the-box reachability metadata. +It uses +https://logging.apache.org/log4j/2.x/manual/json-template-layout.html[JSON Template Layout] +to format log events. +[#log4j-core-minimal] `log4j-core-minimal`:: This profile uses Log4j Core a logging backend with an external reachability metadata source optimized for size. +It uses +https://logging.apache.org/log4j/2.x/manual/pattern-layout.html[Pattern Layout] +to format log events. -`logback`:: -This profile uses Logback as logging backend. - -`jul`:: -This profile uses `java.util.logging` as logging backend. +[#log4j-core-jtl-minimal] +`log4j-core-jtl-minimal`:: +This profile uses Log4j Core a logging backend with an external reachability metadata source optimized for size. +It uses +https://logging.apache.org/log4j/2.x/manual/json-template-layout.html[JSON Template Layout] +to format log events. -`simple`:: -This profile uses `SimpleLogger` as logging backend. -. run the application with +. Run the application with + [source,shell] ---- @@ -58,10 +76,9 @@ target/log4j-samples-graalvm == Reachability metadata -Log4j as many other Java libraries, relies heavily on reflection to convert the configuration file into an instance of a +Log4j, as many other Java libraries, relies heavily on reflection to convert the configuration file into an instance of a https://logging.apache.org/log4j/2.x/javadoc/log4j-core/org/apache/logging/log4j/core/config/Configuration.html[Configuration] object. - The classes that are accessed through reflection are called Log4j plugins and GraalVM must be aware of their existence through the usage of reachability metadata. See @@ -70,28 +87,15 @@ and https://www.graalvm.org/latest/reference-manual/native-image/metadata/[GraalVM reachability metadata] for more details. -The reachability metadata in this project was: - -* generated using the -https://www.graalvm.org/latest/reference-manual/native-image/metadata/AutomaticMetadataCollection/#tracing-agent[GraalVM tracing agent]: -+ -[source,shell,subs=+attributes] ----- -# Build application classpath -export CLASSPATH=$(\ -../mvnw -q \ -dependency:build-classpath -DincludeScope=runtime -Dmdep.outputProperty=classpath \ -help:evaluate -Dexpression=classpath -DforceStdout \ -) -CLASSPATH="target/log4j-samples-graalvm-0.0.0-SNAPSHOT.jar:$CLASSPATH" -# Run application using the GraalVM agent -$JAVA_HOME/bin/java \ --agentlib:native-image-agent=config-output-dir=src/reachability-metadata/minimal/log4j-core/2.24.0 \ -org.apache.logging.log4j.samples.graalvm.Main ----- - -* the generated `reflect-config.json` file was further trimmed down manually, by removing all the Log4j plugins that are not used by this configuration. -These plugins are easy to spot, because they only have a `name` key. +The +https://logging.apache.org/log4j/2.x/manual/plugins.html#plugin-registry[Log4j plugin descriptors] +and +GraalVM reachability metadata used in the customized +<<log4j-core-minimal,`use-log4j-core-minimal`>> +and +<<log4j-core-jtl-minimal,`use-log4j-core-jtl-minimal`>> +profiles were generated using the procedure described in the documentation of the +https://logging.apache.org/log4j/transform/cli.html#log4j-converter-plugin-descriptor[`log4j-converter-plugin-descriptor` tool]. == Native binary size @@ -104,25 +108,29 @@ Since this is a trivial Java application, the difference between the binary size In a typical application, those classes are already required, so the difference should be smaller. ==== -[cols="1,1"] +[cols="3,1"] |=== | Configuration | Size +| With `SimpleLogger` +| 13.90 MiB + +| With `java.util.logging` +| 14.10 MiB + +| With Logback +| 30.62 MiB + | With Log4j Core (manually optimized reachability metadata) | 36.19 MiB +| With Log4j Core + JSON Template Layout (manually optimized reachability metadata) +| 37.40 MiB + | With Log4j Core (embedded full reachability metadata) | 46.80 MiB | With Log4j Core + JSON Template Layout (embedded full reachability metadata) | 47.37 MiB -| With Logback -| 30.62 MiB - -| With `java.util.logging` -| 14.10 MiB - -| With `SimpleLogger` -| 13.90 MiB |=== diff --git a/log4j-samples-graalvm/pom.xml b/log4j-samples-graalvm/pom.xml index efe7a69..793f3ca 100644 --- a/log4j-samples-graalvm/pom.xml +++ b/log4j-samples-graalvm/pom.xml @@ -24,6 +24,7 @@ <relativePath /> </parent> + <groupId>org.apache.logging.log4j.samples</groupId> <artifactId>log4j-samples-graalvm</artifactId> <version>${revision}</version> <name>Apache Log4j Samples: GraalVM native image</name> @@ -66,6 +67,7 @@ <!-- IT to run for each profile --> <integration-tests-include>none</integration-tests-include> + <profile-resources>none</profile-resources> </properties> <dependencyManagement> @@ -160,6 +162,32 @@ <build> <plugins> + <!-- + ~ Step 0: we add per-profile resource. + --> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>build-helper-maven-plugin</artifactId> + <executions> + <execution> + <id>add-profile-resources</id> + <goals> + <goal>add-resource</goal> + </goals> + <configuration> + <resources> + <resource> + <directory>src/reachability-metadata/${profile-resources}/resources</directory> + </resource> + </resources> + </configuration> + </execution> + </executions> + </plugin> + + <!-- + ~ Step 1: we create the application as executable JAR without dependencies. + --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> @@ -178,19 +206,68 @@ </plugin> <!-- - ~ Creates a native executable + ~ Step 2 (optional): we shade the application. + ~ + ~ This step is only necessary to create custom images containing Log4j Core in the profiles: + ~ * `use-log4j-core-minimal` + ~ * `use-log4j-core-jtl-minimal` + ~ + ~ This step is disabled by default. + --> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-shade-plugin</artifactId> + <executions> + <execution> + <id>shade-jar-with-dependencies</id> + <goals> + <goal>shade</goal> + </goals> + <phase>none</phase> + <configuration> + <filters> + <filter> + <artifact>*:*</artifact> + <excludes> + <exclude>module-info.class</exclude> + <exclude>META-INF/versions/*/module-info.class</exclude> + <exclude>META-INF/MANIFEST.MF</exclude> + <exclude>META-INF/DEPENDENCIES</exclude> + </excludes> + </filter> + <!-- + ~ Removes the metadata embedded in official Log4j JARs. + ~ The metadata will be replaced with a custom version. + --> + <filter> + <artifact>org.apache.logging.log4j:*</artifact> + <excludes> + <exclude>META-INF/org/apache/logging/log4j/core/config/plugins/Log4j2Plugins.dat</exclude> + <exclude>META-INF/native-image/org.apache.logging.log4j/*/reflect-config.json</exclude> + </excludes> + </filter> + </filters> + <shadedArtifactAttached>true</shadedArtifactAttached> + <shadedClassifierName>shaded</shadedClassifierName> + <transformers> + <transformer implementation="org.apache.maven.plugins.shade.resource.ApacheLicenseResourceTransformer" /> + <transformer implementation="org.apache.maven.plugins.shade.resource.ApacheNoticeResourceTransformer" /> + <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" /> + <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer" /> + </transformers> + </configuration> + </execution> + </executions> + </plugin> + + <!-- + ~ Step 3: Creates a native executable. --> <plugin> <groupId>org.graalvm.buildtools</groupId> <artifactId>native-maven-plugin</artifactId> <version>0.10.3</version> <extensions>true</extensions> - <configuration> - <mainClass>org.apache.logging.log4j.samples.graalvm.Main</mainClass> - <metadataRepository> - <enabled>false</enabled> - </metadataRepository> - </configuration> <executions> <execution> <id>build-native</id> @@ -198,12 +275,18 @@ <goal>compile-no-fork</goal> </goals> <phase>package</phase> + <configuration> + <mainClass>org.apache.logging.log4j.samples.graalvm.Main</mainClass> + <metadataRepository> + <enabled>false</enabled> + </metadataRepository> + </configuration> </execution> </executions> </plugin> <!-- - ~ Cleans the logs directory before running the executable + ~ Step 4: Cleans the logs directory before running the executable. --> <plugin> <groupId>org.apache.maven.plugins</groupId> @@ -231,7 +314,7 @@ </plugin> <!-- - ~ Runs the native executable + ~ Step 5: Runs the native executable. --> <plugin> <groupId>org.codehaus.mojo</groupId> @@ -253,7 +336,7 @@ </plugin> <!-- - ~ Verifies the content of the log file + ~ Step 6: Verifies the content of the log file. --> <plugin> <groupId>org.apache.maven.plugins</groupId> @@ -277,6 +360,9 @@ <profiles> <!-- + ~ ################################################################################################################ + ~ JAVA UTIL LOGGING + ~ ################################################################################################################ ~ Enable this profile to use JUL as logging implementation. --> <profile> @@ -284,6 +370,7 @@ <properties> <integration-tests-include>**/JulIT.class</integration-tests-include> + <profile-resources>jul</profile-resources> </properties> <dependencies> @@ -293,26 +380,12 @@ <scope>runtime</scope> </dependency> </dependencies> - - <build> - <plugins> - <!-- - ~ JUL requires reflection metadata for FileHandler - --> - <plugin> - <groupId>org.graalvm.buildtools</groupId> - <artifactId>native-maven-plugin</artifactId> - <configuration> - <buildArgs> - <arg>-H:ConfigurationFileDirectories=${basedir}/src/reachability-metadata/jul</arg> - </buildArgs> - </configuration> - </plugin> - </plugins> - </build> </profile> <!-- + ~ ################################################################################################################ + ~ LOG4J CORE (minimal) + ~ ################################################################################################################ ~ Enable this profile to use Log4j Core as logging implementation with a manually crafted metadata file. --> <profile> @@ -320,6 +393,7 @@ <properties> <integration-tests-include>**/StandardIT.class</integration-tests-include> + <profile-resources>log4j-core-minimal</profile-resources> </properties> <dependencies> @@ -330,31 +404,47 @@ </dependency> </dependencies> + <!-- + ~ Use a different source of Log4j Core metadata. + --> <build> <plugins> - <!-- - ~ Use a different source of Log4j Core metadata. - --> + <!-- Filter out the full embedded configuration --> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-shade-plugin</artifactId> + <executions> + <execution> + <id>shade-jar-with-dependencies</id> + <phase>package</phase> + </execution> + </executions> + </plugin> + <!-- Creates native image based on the shaded artifact --> <plugin> <groupId>org.graalvm.buildtools</groupId> <artifactId>native-maven-plugin</artifactId> - <configuration> - <buildArgs> - <arg>--exclude-config</arg> - <arg>log4j-core.*jar</arg> - <arg>META-INF/native-image/org\.apache\.logging\.log4j/log4j-core/reflect-config\.json</arg> - </buildArgs> - <metadataRepository> - <enabled>true</enabled> - <localPath>${project.basedir}/src/reachability-metadata/minimal</localPath> - </metadataRepository> - </configuration> + <version>0.10.3</version> + <extensions>true</extensions> + <executions> + <execution> + <id>build-native</id> + <configuration> + <classpath> + <jar>${project.build.directory}/${project.artifactId}-${project.version}-shaded.jar</jar> + </classpath> + </configuration> + </execution> + </executions> </plugin> </plugins> </build> </profile> <!-- + ~ ################################################################################################################ + ~ LOG4J CORE (full) + ~ ################################################################################################################ ~ Enable this profile to use Log4j Core as logging implementation with a full metadata file. --> <profile> @@ -374,13 +464,17 @@ </profile> <!-- - ~ Enable this profile to use Log4j Core + JSON Template Layout - --> + ~ ################################################################################################################ + ~ LOG4J CORE + JTL (minimal) + ~ ################################################################################################################ + ~ Enable this profile to use a handcrafted configuration Log4j Core + JSON Template Layout + --> <profile> - <id>use-log4j-core-jtl</id> + <id>use-log4j-core-jtl-minimal</id> <properties> <integration-tests-include>**/JsonTemplateLayoutIT.class</integration-tests-include> + <profile-resources>log4j-core-jtl-minimal</profile-resources> </properties> <dependencies> @@ -405,22 +499,35 @@ </dependencies> + <!-- + ~ Use a different source of Log4j Core metadata. + --> <build> <plugins> - <!-- - ~ The JSON Template Layout configuration is in `log4j2-jtl`. - --> + <!-- Filter out the full embedded configuration --> <plugin> - <groupId>org.codehaus.mojo</groupId> - <artifactId>exec-maven-plugin</artifactId> - <version>3.5.0</version> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-shade-plugin</artifactId> <executions> <execution> - <id>run-executable</id> + <id>shade-jar-with-dependencies</id> + <phase>package</phase> + </execution> + </executions> + </plugin> + <!-- Creates native image based on the shaded artifact --> + <plugin> + <groupId>org.graalvm.buildtools</groupId> + <artifactId>native-maven-plugin</artifactId> + <version>0.10.3</version> + <extensions>true</extensions> + <executions> + <execution> + <id>build-native</id> <configuration> - <arguments> - <argument>-Dlog4j2.configurationFile=log4j2-jtl.xml</argument> - </arguments> + <classpath> + <jar>${project.build.directory}/${project.artifactId}-${project.version}-shaded.jar</jar> + </classpath> </configuration> </execution> </executions> @@ -430,6 +537,46 @@ </profile> <!-- + ~ ################################################################################################################ + ~ LOG4J CORE + JTL (full) + ~ ################################################################################################################ + ~ Enable this profile to use Log4j Core + JSON Template Layout + --> + <profile> + <id>use-log4j-core-jtl</id> + + <properties> + <integration-tests-include>**/JsonTemplateLayoutIT.class</integration-tests-include> + <profile-resources>log4j-core-jtl</profile-resources> + </properties> + + <dependencies> + + <dependency> + <groupId>org.apache.logging.log4j</groupId> + <artifactId>log4j-core</artifactId> + <scope>runtime</scope> + </dependency> + + <dependency> + <groupId>org.apache.logging.log4j</groupId> + <artifactId>log4j-layout-template-json</artifactId> + <scope>runtime</scope> + </dependency> + + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-nop</artifactId> + <scope>test</scope> + </dependency> + + </dependencies> + </profile> + + <!-- + ~ ################################################################################################################ + ~ LOGBACK + ~ ################################################################################################################ ~ Enable this profile to use Logback as logging implementation. --> <profile> @@ -437,6 +584,7 @@ <properties> <integration-tests-include>**/StandardIT.class</integration-tests-include> + <profile-resources>logback</profile-resources> </properties> <dependencies> @@ -455,56 +603,42 @@ </dependencies> + <!-- + ~ Logback needs additional metadata + --> <build> <plugins> - <!-- - ~ Logback needs additional metadata - --> + <!-- Use external reflection metadata configuration --> <plugin> <groupId>org.graalvm.buildtools</groupId> <artifactId>native-maven-plugin</artifactId> - <configuration> - <metadataRepository> - <enabled>true</enabled> - </metadataRepository> - <buildArgs> - <arg>-H:IncludeResources=logback.xml</arg> - </buildArgs> - </configuration> + <executions> + <execution> + <id>build-native</id> + <configuration> + <metadataRepository> + <enabled>true</enabled> + </metadataRepository> + </configuration> + </execution> + </executions> </plugin> </plugins> </build> </profile> + <!-- + ~ ################################################################################################################ + ~ SIMPLE LOGGER + ~ ################################################################################################################ + --> <profile> <id>use-simple</id> <properties> <integration-tests-include>**/SimpleIT.class</integration-tests-include> + <profile-resources>simple</profile-resources> </properties> - - <build> - <plugins> - <!-- - ~ SimpleLogger needs some system properties - --> - <plugin> - <groupId>org.codehaus.mojo</groupId> - <artifactId>exec-maven-plugin</artifactId> - <version>3.5.0</version> - <executions> - <execution> - <id>run-executable</id> - <configuration> - <arguments> - <argument>-Dlog4j.provider=org.apache.logging.log4j.simple.internal.SimpleProvider</argument> - </arguments> - </configuration> - </execution> - </executions> - </plugin> - </plugins> - </build> </profile> </profiles> </project> diff --git a/log4j-samples-graalvm/src/reachability-metadata/jul/index.json b/log4j-samples-graalvm/src/reachability-metadata/jul/index.json deleted file mode 100644 index 93a3dda..0000000 --- a/log4j-samples-graalvm/src/reachability-metadata/jul/index.json +++ /dev/null @@ -1,4 +0,0 @@ -[ - "reflect-config.json", - "resource-config.json" -] \ No newline at end of file diff --git a/log4j-samples-graalvm/src/reachability-metadata/jul/reflect-config.json b/log4j-samples-graalvm/src/reachability-metadata/jul/resources/META-INF/native-image/java.util.logging/reflect-config.json similarity index 100% rename from log4j-samples-graalvm/src/reachability-metadata/jul/reflect-config.json rename to log4j-samples-graalvm/src/reachability-metadata/jul/resources/META-INF/native-image/java.util.logging/reflect-config.json diff --git a/log4j-samples-graalvm/src/reachability-metadata/jul/resource-config.json b/log4j-samples-graalvm/src/reachability-metadata/jul/resources/META-INF/native-image/java.util.logging/resource-config.json similarity index 64% copy from log4j-samples-graalvm/src/reachability-metadata/jul/resource-config.json copy to log4j-samples-graalvm/src/reachability-metadata/jul/resources/META-INF/native-image/java.util.logging/resource-config.json index 6f02a9c..e0e35e1 100644 --- a/log4j-samples-graalvm/src/reachability-metadata/jul/resource-config.json +++ b/log4j-samples-graalvm/src/reachability-metadata/jul/resources/META-INF/native-image/java.util.logging/resource-config.json @@ -2,7 +2,7 @@ "resources": { "includes": [ { - "pattern": "\\Qlogging.properties\\E" + "pattern": "logging\\.properties" } ] }, diff --git a/log4j-samples-graalvm/src/reachability-metadata/log4j-core-jtl-minimal/Log4j2Plugins.json b/log4j-samples-graalvm/src/reachability-metadata/log4j-core-jtl-minimal/Log4j2Plugins.json new file mode 100644 index 0000000..7812f6f --- /dev/null +++ b/log4j-samples-graalvm/src/reachability-metadata/log4j-core-jtl-minimal/Log4j2Plugins.json @@ -0,0 +1,535 @@ +{ + "configurationfactory": { + "org.apache.logging.log4j.core.config.xml.XmlConfigurationFactory": { + "pluginNames": [ + "xmlconfigurationfactory" + ], + "elementName": "XmlConfigurationFactory", + "printable": false, + "defer": false, + "builderHierarchy": [] + } + }, + "core": { + "org.apache.logging.log4j.core.appender.ConsoleAppender": { + "pluginNames": [ + "console" + ], + "elementName": "appender", + "printable": true, + "defer": false, + "builderHierarchy": [ + "org.apache.logging.log4j.core.appender.ConsoleAppender$Builder", + "org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender$Builder", + "org.apache.logging.log4j.core.appender.AbstractAppender$Builder", + "org.apache.logging.log4j.core.filter.AbstractFilterable$Builder" + ] + }, + "org.apache.logging.log4j.core.appender.FileAppender": { + "pluginNames": [ + "file" + ], + "elementName": "appender", + "printable": true, + "defer": false, + "builderHierarchy": [ + "org.apache.logging.log4j.core.appender.FileAppender$Builder", + "org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender$Builder", + "org.apache.logging.log4j.core.appender.AbstractAppender$Builder", + "org.apache.logging.log4j.core.filter.AbstractFilterable$Builder" + ] + }, + "org.apache.logging.log4j.core.config.AppenderRef": { + "pluginNames": [ + "appender-ref", + "appenderref" + ], + "elementName": "appender-ref", + "printable": true, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.config.AppendersPlugin": { + "pluginNames": [ + "appenders" + ], + "elementName": "Appenders", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.config.LoggerConfig": { + "pluginNames": [ + "logger" + ], + "elementName": "Logger", + "printable": true, + "defer": false, + "builderHierarchy": [ + "org.apache.logging.log4j.core.config.LoggerConfig$Builder" + ] + }, + "org.apache.logging.log4j.core.config.LoggerConfig$RootLogger": { + "pluginNames": [ + "root" + ], + "elementName": "Root", + "printable": true, + "defer": false, + "builderHierarchy": [ + "org.apache.logging.log4j.core.config.LoggerConfig$RootLogger$Builder" + ] + }, + "org.apache.logging.log4j.core.config.LoggersPlugin": { + "pluginNames": [ + "loggers" + ], + "elementName": "Loggers", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.layout.template.json.JsonTemplateLayout": { + "pluginNames": [ + "jsontemplatelayout" + ], + "elementName": "layout", + "printable": false, + "defer": false, + "builderHierarchy": [ + "org.apache.logging.log4j.layout.template.json.JsonTemplateLayout$Builder" + ] + }, + "org.apache.logging.log4j.layout.template.json.JsonTemplateLayout$EventTemplateAdditionalField": { + "pluginNames": [ + "eventtemplateadditionalfield" + ], + "elementName": "EventTemplateAdditionalField", + "printable": true, + "defer": false, + "builderHierarchy": [ + "org.apache.logging.log4j.layout.template.json.JsonTemplateLayout$EventTemplateAdditionalField$Builder" + ] + } + }, + "jsontemplateresolverfactory": { + "org.apache.logging.log4j.layout.template.json.resolver.CaseConverterResolverFactory": { + "pluginNames": [ + "caseconverterresolverfactory" + ], + "elementName": "CaseConverterResolverFactory", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.layout.template.json.resolver.CounterResolverFactory": { + "pluginNames": [ + "counterresolverfactory" + ], + "elementName": "CounterResolverFactory", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.layout.template.json.resolver.EndOfBatchResolverFactory": { + "pluginNames": [ + "endofbatchresolverfactory" + ], + "elementName": "EndOfBatchResolverFactory", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.layout.template.json.resolver.ExceptionResolverFactory": { + "pluginNames": [ + "exceptionresolverfactory" + ], + "elementName": "ExceptionResolverFactory", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.layout.template.json.resolver.ExceptionRootCauseResolverFactory": { + "pluginNames": [ + "exceptionrootcauseresolverfactory" + ], + "elementName": "ExceptionRootCauseResolverFactory", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.layout.template.json.resolver.LevelResolverFactory": { + "pluginNames": [ + "levelresolverfactory" + ], + "elementName": "LevelResolverFactory", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.layout.template.json.resolver.LoggerResolverFactory": { + "pluginNames": [ + "loggerresolverfactory" + ], + "elementName": "LoggerResolverFactory", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.layout.template.json.resolver.MainMapResolverFactory": { + "pluginNames": [ + "mainmapresolverfactory" + ], + "elementName": "MainMapResolverFactory", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.layout.template.json.resolver.MapResolverFactory": { + "pluginNames": [ + "mapresolverfactory" + ], + "elementName": "MapResolverFactory", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.layout.template.json.resolver.MarkerResolverFactory": { + "pluginNames": [ + "markerresolverfactory" + ], + "elementName": "MarkerResolverFactory", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.layout.template.json.resolver.MessageParameterResolverFactory": { + "pluginNames": [ + "messageparameterresolverfactory" + ], + "elementName": "MessageParameterResolverFactory", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.layout.template.json.resolver.MessageResolverFactory": { + "pluginNames": [ + "messageresolverfactory" + ], + "elementName": "MessageResolverFactory", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.layout.template.json.resolver.SourceResolverFactory": { + "pluginNames": [ + "sourceresolverfactory" + ], + "elementName": "SourceResolverFactory", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.layout.template.json.resolver.ThreadContextDataResolverFactory": { + "pluginNames": [ + "threadcontextdataresolverfactory" + ], + "elementName": "ThreadContextDataResolverFactory", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.layout.template.json.resolver.ThreadContextStackResolverFactory": { + "pluginNames": [ + "threadcontextstackresolverfactory" + ], + "elementName": "ThreadContextStackResolverFactory", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.layout.template.json.resolver.ThreadResolverFactory": { + "pluginNames": [ + "threadresolverfactory" + ], + "elementName": "ThreadResolverFactory", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.layout.template.json.resolver.TimestampResolverFactory": { + "pluginNames": [ + "timestampresolverfactory" + ], + "elementName": "TimestampResolverFactory", + "printable": false, + "defer": false, + "builderHierarchy": [] + } + }, + "jsontemplateresolverinterceptor": { + "org.apache.logging.log4j.layout.template.json.resolver.EventAdditionalFieldInterceptor": { + "pluginNames": [ + "eventadditionalfieldinterceptor" + ], + "elementName": "EventAdditionalFieldInterceptor", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.layout.template.json.resolver.EventRootObjectKeyInterceptor": { + "pluginNames": [ + "eventrootobjectkeyinterceptor" + ], + "elementName": "EventRootObjectKeyInterceptor", + "printable": false, + "defer": false, + "builderHierarchy": [] + } + }, + "typeconverter": { + "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$BigDecimalConverter": { + "pluginNames": [ + "bigdecimal" + ], + "elementName": "BigDecimal", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$BigIntegerConverter": { + "pluginNames": [ + "biginteger" + ], + "elementName": "BigInteger", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$BooleanConverter": { + "pluginNames": [ + "boolean" + ], + "elementName": "Boolean", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$ByteArrayConverter": { + "pluginNames": [ + "bytearray" + ], + "elementName": "ByteArray", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$ByteConverter": { + "pluginNames": [ + "byte" + ], + "elementName": "Byte", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$CharArrayConverter": { + "pluginNames": [ + "characterarray" + ], + "elementName": "CharacterArray", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$CharacterConverter": { + "pluginNames": [ + "character" + ], + "elementName": "Character", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$CharsetConverter": { + "pluginNames": [ + "charset" + ], + "elementName": "Charset", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$ClassConverter": { + "pluginNames": [ + "class" + ], + "elementName": "Class", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$CronExpressionConverter": { + "pluginNames": [ + "cronexpression" + ], + "elementName": "CronExpression", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$DoubleConverter": { + "pluginNames": [ + "double" + ], + "elementName": "Double", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$DurationConverter": { + "pluginNames": [ + "duration" + ], + "elementName": "Duration", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$FileConverter": { + "pluginNames": [ + "file" + ], + "elementName": "File", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$FloatConverter": { + "pluginNames": [ + "float" + ], + "elementName": "Float", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$InetAddressConverter": { + "pluginNames": [ + "inetaddress" + ], + "elementName": "InetAddress", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$IntegerConverter": { + "pluginNames": [ + "integer" + ], + "elementName": "Integer", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$LevelConverter": { + "pluginNames": [ + "level" + ], + "elementName": "Level", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$LongConverter": { + "pluginNames": [ + "long" + ], + "elementName": "Long", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$PathConverter": { + "pluginNames": [ + "path" + ], + "elementName": "Path", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$PatternConverter": { + "pluginNames": [ + "pattern" + ], + "elementName": "Pattern", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$SecurityProviderConverter": { + "pluginNames": [ + "securityprovider" + ], + "elementName": "SecurityProvider", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$ShortConverter": { + "pluginNames": [ + "short" + ], + "elementName": "Short", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$StringConverter": { + "pluginNames": [ + "string" + ], + "elementName": "String", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$UriConverter": { + "pluginNames": [ + "uri" + ], + "elementName": "URI", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$UrlConverter": { + "pluginNames": [ + "url" + ], + "elementName": "URL", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$UuidConverter": { + "pluginNames": [ + "uuid" + ], + "elementName": "UUID", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.layout.template.json.util.RecyclerFactoryConverter": { + "pluginNames": [ + "recyclerfactoryconverter" + ], + "elementName": "RecyclerFactoryConverter", + "printable": false, + "defer": false, + "builderHierarchy": [] + } + } +} \ No newline at end of file diff --git a/log4j-samples-graalvm/src/reachability-metadata/minimal/log4j-core/2.24.0/reflect-config.json b/log4j-samples-graalvm/src/reachability-metadata/log4j-core-jtl-minimal/resources/META-INF/native-image/org.apache.logging.log4j/log4j-core/reflect-config.json similarity index 65% rename from log4j-samples-graalvm/src/reachability-metadata/minimal/log4j-core/2.24.0/reflect-config.json rename to log4j-samples-graalvm/src/reachability-metadata/log4j-core-jtl-minimal/resources/META-INF/native-image/org.apache.logging.log4j/log4j-core/reflect-config.json index a419fe9..d36bb91 100644 --- a/log4j-samples-graalvm/src/reachability-metadata/minimal/log4j-core/2.24.0/reflect-config.json +++ b/log4j-samples-graalvm/src/reachability-metadata/log4j-core-jtl-minimal/resources/META-INF/native-image/org.apache.logging.log4j/log4j-core/reflect-config.json @@ -1,37 +1,107 @@ [ { "name": "org.apache.logging.log4j.core.appender.AbstractAppender$Builder", - "allDeclaredFields": true + "methods": [], + "fields": [ + { + "name": "configuration" + }, + { + "name": "ignoreExceptions" + }, + { + "name": "layout" + }, + { + "name": "name" + } + ] }, { "name": "org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender$Builder", - "allDeclaredFields": true + "methods": [], + "fields": [ + { + "name": "bufferSize" + }, + { + "name": "bufferedIo" + }, + { + "name": "immediateFlush" + } + ] }, { - "name": "org.apache.logging.log4j.core.appender.FileAppender", - "queryAllDeclaredMethods": true, + "name": "org.apache.logging.log4j.core.appender.ConsoleAppender", "methods": [ { "name": "newBuilder", "parameterTypes": [] } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.appender.ConsoleAppender$Builder", + "methods": [], + "fields": [ + { + "name": "direct" + }, + { + "name": "follow" + }, + { + "name": "target" + } ] }, { - "name": "org.apache.logging.log4j.core.appender.FileAppender$Builder", - "allDeclaredFields": true + "name": "org.apache.logging.log4j.core.appender.FileAppender", + "methods": [ + { + "name": "newBuilder", + "parameterTypes": [] + } + ], + "fields": [] }, { - "name": "org.apache.logging.log4j.core.config.AppenderControlArraySet", + "name": "org.apache.logging.log4j.core.appender.FileAppender$Builder", + "methods": [], "fields": [ { - "name": "appenderArray" + "name": "advertise" + }, + { + "name": "advertiseUri" + }, + { + "name": "append" + }, + { + "name": "createOnDemand" + }, + { + "name": "fileGroup" + }, + { + "name": "fileName" + }, + { + "name": "fileOwner" + }, + { + "name": "filePermissions" + }, + { + "name": "locking" } ] }, { "name": "org.apache.logging.log4j.core.config.AppenderRef", - "queryAllDeclaredMethods": true, "methods": [ { "name": "createAppenderRef", @@ -41,11 +111,11 @@ "org.apache.logging.log4j.core.Filter" ] } - ] + ], + "fields": [] }, { "name": "org.apache.logging.log4j.core.config.AppendersPlugin", - "queryAllDeclaredMethods": true, "methods": [ { "name": "createAppenders", @@ -53,25 +123,110 @@ "org.apache.logging.log4j.core.Appender[]" ] } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.config.LoggerConfig", + "methods": [ + { + "name": "<init>", + "parameterTypes": [] + }, + { + "name": "<init>", + "parameterTypes": [ + "java.lang.String", + "org.apache.logging.log4j.Level", + "boolean" + ] + }, + { + "name": "newBuilder", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.config.LoggerConfig$Builder", + "methods": [], + "fields": [ + { + "name": "additivity" + }, + { + "name": "config" + }, + { + "name": "filter" + }, + { + "name": "includeLocation" + }, + { + "name": "level" + }, + { + "name": "levelAndRefs" + }, + { + "name": "loggerName" + }, + { + "name": "properties" + }, + { + "name": "refs" + } ] }, { "name": "org.apache.logging.log4j.core.config.LoggerConfig$RootLogger", - "queryAllDeclaredMethods": true, "methods": [ + { + "name": "<init>", + "parameterTypes": [] + }, { "name": "newRootBuilder", "parameterTypes": [] } - ] + ], + "fields": [] }, { "name": "org.apache.logging.log4j.core.config.LoggerConfig$RootLogger$Builder", - "allDeclaredFields": true + "methods": [], + "fields": [ + { + "name": "additivity" + }, + { + "name": "config" + }, + { + "name": "filter" + }, + { + "name": "includeLocation" + }, + { + "name": "level" + }, + { + "name": "levelAndRefs" + }, + { + "name": "properties" + }, + { + "name": "refs" + } + ] }, { "name": "org.apache.logging.log4j.core.config.LoggersPlugin", - "queryAllDeclaredMethods": true, "methods": [ { "name": "createLoggers", @@ -79,7 +234,8 @@ "org.apache.logging.log4j.core.config.LoggerConfig[]" ] } - ] + ], + "fields": [] }, { "name": "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$BigDecimalConverter", @@ -88,7 +244,8 @@ "name": "<init>", "parameterTypes": [] } - ] + ], + "fields": [] }, { "name": "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$BigIntegerConverter", @@ -97,7 +254,8 @@ "name": "<init>", "parameterTypes": [] } - ] + ], + "fields": [] }, { "name": "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$BooleanConverter", @@ -106,7 +264,8 @@ "name": "<init>", "parameterTypes": [] } - ] + ], + "fields": [] }, { "name": "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$ByteArrayConverter", @@ -115,7 +274,8 @@ "name": "<init>", "parameterTypes": [] } - ] + ], + "fields": [] }, { "name": "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$ByteConverter", @@ -124,7 +284,8 @@ "name": "<init>", "parameterTypes": [] } - ] + ], + "fields": [] }, { "name": "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$CharArrayConverter", @@ -133,7 +294,8 @@ "name": "<init>", "parameterTypes": [] } - ] + ], + "fields": [] }, { "name": "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$CharacterConverter", @@ -142,7 +304,8 @@ "name": "<init>", "parameterTypes": [] } - ] + ], + "fields": [] }, { "name": "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$CharsetConverter", @@ -151,7 +314,8 @@ "name": "<init>", "parameterTypes": [] } - ] + ], + "fields": [] }, { "name": "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$ClassConverter", @@ -160,7 +324,8 @@ "name": "<init>", "parameterTypes": [] } - ] + ], + "fields": [] }, { "name": "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$CronExpressionConverter", @@ -169,7 +334,8 @@ "name": "<init>", "parameterTypes": [] } - ] + ], + "fields": [] }, { "name": "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$DoubleConverter", @@ -178,7 +344,8 @@ "name": "<init>", "parameterTypes": [] } - ] + ], + "fields": [] }, { "name": "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$DurationConverter", @@ -187,7 +354,8 @@ "name": "<init>", "parameterTypes": [] } - ] + ], + "fields": [] }, { "name": "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$FileConverter", @@ -196,7 +364,8 @@ "name": "<init>", "parameterTypes": [] } - ] + ], + "fields": [] }, { "name": "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$FloatConverter", @@ -205,7 +374,8 @@ "name": "<init>", "parameterTypes": [] } - ] + ], + "fields": [] }, { "name": "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$InetAddressConverter", @@ -214,7 +384,8 @@ "name": "<init>", "parameterTypes": [] } - ] + ], + "fields": [] }, { "name": "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$IntegerConverter", @@ -223,7 +394,8 @@ "name": "<init>", "parameterTypes": [] } - ] + ], + "fields": [] }, { "name": "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$LevelConverter", @@ -232,7 +404,8 @@ "name": "<init>", "parameterTypes": [] } - ] + ], + "fields": [] }, { "name": "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$LongConverter", @@ -241,7 +414,8 @@ "name": "<init>", "parameterTypes": [] } - ] + ], + "fields": [] }, { "name": "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$PathConverter", @@ -250,7 +424,8 @@ "name": "<init>", "parameterTypes": [] } - ] + ], + "fields": [] }, { "name": "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$PatternConverter", @@ -259,7 +434,8 @@ "name": "<init>", "parameterTypes": [] } - ] + ], + "fields": [] }, { "name": "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$SecurityProviderConverter", @@ -268,7 +444,8 @@ "name": "<init>", "parameterTypes": [] } - ] + ], + "fields": [] }, { "name": "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$ShortConverter", @@ -277,7 +454,8 @@ "name": "<init>", "parameterTypes": [] } - ] + ], + "fields": [] }, { "name": "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$StringConverter", @@ -286,7 +464,8 @@ "name": "<init>", "parameterTypes": [] } - ] + ], + "fields": [] }, { "name": "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$UriConverter", @@ -295,7 +474,8 @@ "name": "<init>", "parameterTypes": [] } - ] + ], + "fields": [] }, { "name": "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$UrlConverter", @@ -304,7 +484,8 @@ "name": "<init>", "parameterTypes": [] } - ] + ], + "fields": [] }, { "name": "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$UuidConverter", @@ -313,160 +494,139 @@ "name": "<init>", "parameterTypes": [] } - ] + ], + "fields": [] }, { - "name": "org.apache.logging.log4j.core.config.plugins.validation.validators.RequiredValidator", + "name": "org.apache.logging.log4j.core.config.plugins.validation.validators.NotBlankValidator", "methods": [ { "name": "<init>", "parameterTypes": [] } - ] + ], + "fields": [] }, { - "name": "org.apache.logging.log4j.core.config.plugins.visitors.PluginAttributeVisitor", + "name": "org.apache.logging.log4j.core.config.plugins.validation.validators.RequiredValidator", "methods": [ { "name": "<init>", "parameterTypes": [] } - ] + ], + "fields": [] }, { - "name": "org.apache.logging.log4j.core.config.plugins.visitors.PluginBuilderAttributeVisitor", + "name": "org.apache.logging.log4j.core.config.plugins.validation.validators.ValidHostValidator", "methods": [ { "name": "<init>", "parameterTypes": [] } - ] + ], + "fields": [] }, { - "name": "org.apache.logging.log4j.core.config.plugins.visitors.PluginConfigurationVisitor", + "name": "org.apache.logging.log4j.core.config.plugins.validation.validators.ValidPortValidator", "methods": [ { "name": "<init>", "parameterTypes": [] } - ] + ], + "fields": [] }, { - "name": "org.apache.logging.log4j.core.config.plugins.visitors.PluginElementVisitor", + "name": "org.apache.logging.log4j.core.config.plugins.visitors.PluginAttributeVisitor", "methods": [ { "name": "<init>", "parameterTypes": [] } - ] + ], + "fields": [] }, { - "name": "org.apache.logging.log4j.core.config.xml.XmlConfigurationFactory", + "name": "org.apache.logging.log4j.core.config.plugins.visitors.PluginBuilderAttributeVisitor", "methods": [ { "name": "<init>", "parameterTypes": [] } - ] - }, - { - "name": "org.apache.logging.log4j.core.filter.AbstractFilterable$Builder", - "allDeclaredFields": true + ], + "fields": [] }, { - "name": "org.apache.logging.log4j.core.impl.Log4jContextFactory", + "name": "org.apache.logging.log4j.core.config.plugins.visitors.PluginConfigurationVisitor", "methods": [ { "name": "<init>", "parameterTypes": [] } - ] + ], + "fields": [] }, { - "name": "org.apache.logging.log4j.core.layout.PatternLayout", - "queryAllDeclaredMethods": true, + "name": "org.apache.logging.log4j.core.config.plugins.visitors.PluginElementVisitor", "methods": [ { - "name": "newBuilder", + "name": "<init>", "parameterTypes": [] } - ] - }, - { - "name": "org.apache.logging.log4j.core.layout.PatternLayout$Builder", - "allDeclaredFields": true + ], + "fields": [] }, { - "name": "org.apache.logging.log4j.core.pattern.DatePatternConverter", - "queryAllDeclaredMethods": true, + "name": "org.apache.logging.log4j.core.config.plugins.visitors.PluginLoggerContextVisitor", "methods": [ { - "name": "newInstance", - "parameterTypes": [ - "java.lang.String[]" - ] + "name": "<init>", + "parameterTypes": [] } - ] + ], + "fields": [] }, { - "name": "org.apache.logging.log4j.core.pattern.LevelPatternConverter", - "queryAllDeclaredMethods": true, + "name": "org.apache.logging.log4j.core.config.plugins.visitors.PluginNodeVisitor", "methods": [ { - "name": "newInstance", - "parameterTypes": [ - "java.lang.String[]" - ] + "name": "<init>", + "parameterTypes": [] } - ] + ], + "fields": [] }, { - "name": "org.apache.logging.log4j.core.pattern.LineSeparatorPatternConverter", - "queryAllDeclaredMethods": true, + "name": "org.apache.logging.log4j.core.config.plugins.visitors.PluginValueVisitor", "methods": [ { - "name": "newInstance", - "parameterTypes": [ - "java.lang.String[]" - ] + "name": "<init>", + "parameterTypes": [] } - ] + ], + "fields": [] }, { - "name": "org.apache.logging.log4j.core.pattern.LoggerPatternConverter", - "queryAllDeclaredMethods": true, + "name": "org.apache.logging.log4j.core.config.xml.XmlConfigurationFactory", "methods": [ { - "name": "newInstance", - "parameterTypes": [ - "java.lang.String[]" - ] + "name": "<init>", + "parameterTypes": [] } - ] + ], + "fields": [] }, { - "name": "org.apache.logging.log4j.core.pattern.MessagePatternConverter", - "queryAllDeclaredMethods": true, - "methods": [ + "name": "org.apache.logging.log4j.core.filter.AbstractFilterable$Builder", + "methods": [], + "fields": [ { - "name": "newInstance", - "parameterTypes": [ - "org.apache.logging.log4j.core.config.Configuration", - "java.lang.String[]" - ] - } - ] - }, - { - "name": "org.apache.logging.log4j.core.pattern.ThreadNamePatternConverter", - "queryAllDeclaredMethods": true, - "methods": [ + "name": "filter" + }, { - "name": "newInstance", - "parameterTypes": [ - "java.lang.String[]" - ] + "name": "propertyArray" } ] } -] +] \ No newline at end of file diff --git a/log4j-samples-graalvm/src/reachability-metadata/log4j-core-jtl-minimal/resources/META-INF/native-image/org.apache.logging.log4j/log4j-layout-template-json/reflect-config.json b/log4j-samples-graalvm/src/reachability-metadata/log4j-core-jtl-minimal/resources/META-INF/native-image/org.apache.logging.log4j/log4j-layout-template-json/reflect-config.json new file mode 100644 index 0000000..b21f60c --- /dev/null +++ b/log4j-samples-graalvm/src/reachability-metadata/log4j-core-jtl-minimal/resources/META-INF/native-image/org.apache.logging.log4j/log4j-layout-template-json/reflect-config.json @@ -0,0 +1,288 @@ +[ + { + "name": "org.apache.logging.log4j.layout.template.json.JsonTemplateLayout", + "methods": [ + { + "name": "newBuilder", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.layout.template.json.JsonTemplateLayout$Builder", + "methods": [], + "fields": [ + { + "name": "charset" + }, + { + "name": "configuration" + }, + { + "name": "eventDelimiter" + }, + { + "name": "eventTemplate" + }, + { + "name": "eventTemplateAdditionalFields" + }, + { + "name": "eventTemplateRootObjectKey" + }, + { + "name": "eventTemplateUri" + }, + { + "name": "locationInfoEnabled" + }, + { + "name": "maxStringLength" + }, + { + "name": "nullEventDelimiterEnabled" + }, + { + "name": "recyclerFactory" + }, + { + "name": "stackTraceElementTemplate" + }, + { + "name": "stackTraceElementTemplateUri" + }, + { + "name": "stackTraceEnabled" + }, + { + "name": "truncatedStringSuffix" + } + ] + }, + { + "name": "org.apache.logging.log4j.layout.template.json.JsonTemplateLayout$EventTemplateAdditionalField", + "methods": [ + { + "name": "newBuilder", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.layout.template.json.JsonTemplateLayout$EventTemplateAdditionalField$Builder", + "methods": [], + "fields": [ + { + "name": "format" + }, + { + "name": "key" + }, + { + "name": "value" + } + ] + }, + { + "name": "org.apache.logging.log4j.layout.template.json.resolver.CaseConverterResolverFactory", + "methods": [ + { + "name": "getInstance", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.layout.template.json.resolver.CounterResolverFactory", + "methods": [ + { + "name": "getInstance", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.layout.template.json.resolver.EndOfBatchResolverFactory", + "methods": [ + { + "name": "getInstance", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.layout.template.json.resolver.EventAdditionalFieldInterceptor", + "methods": [ + { + "name": "getInstance", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.layout.template.json.resolver.EventRootObjectKeyInterceptor", + "methods": [ + { + "name": "getInstance", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.layout.template.json.resolver.ExceptionResolverFactory", + "methods": [ + { + "name": "getInstance", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.layout.template.json.resolver.ExceptionRootCauseResolverFactory", + "methods": [ + { + "name": "getInstance", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.layout.template.json.resolver.LevelResolverFactory", + "methods": [ + { + "name": "getInstance", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.layout.template.json.resolver.LoggerResolverFactory", + "methods": [ + { + "name": "getInstance", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.layout.template.json.resolver.MainMapResolverFactory", + "methods": [ + { + "name": "getInstance", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.layout.template.json.resolver.MapResolverFactory", + "methods": [ + { + "name": "getInstance", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.layout.template.json.resolver.MarkerResolverFactory", + "methods": [ + { + "name": "getInstance", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.layout.template.json.resolver.MessageParameterResolverFactory", + "methods": [ + { + "name": "getInstance", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.layout.template.json.resolver.MessageResolverFactory", + "methods": [ + { + "name": "getInstance", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.layout.template.json.resolver.SourceResolverFactory", + "methods": [ + { + "name": "getInstance", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.layout.template.json.resolver.ThreadContextDataResolverFactory", + "methods": [ + { + "name": "getInstance", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.layout.template.json.resolver.ThreadContextStackResolverFactory", + "methods": [ + { + "name": "getInstance", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.layout.template.json.resolver.ThreadResolverFactory", + "methods": [ + { + "name": "getInstance", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.layout.template.json.resolver.TimestampResolverFactory", + "methods": [ + { + "name": "getInstance", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.layout.template.json.util.RecyclerFactoryConverter", + "methods": [ + { + "name": "<init>", + "parameterTypes": [] + } + ], + "fields": [] + } +] \ No newline at end of file diff --git a/log4j-samples-graalvm/src/reachability-metadata/log4j-core-jtl-minimal/resources/META-INF/org/apache/logging/log4j/core/config/plugins/Log4j2Plugins.dat b/log4j-samples-graalvm/src/reachability-metadata/log4j-core-jtl-minimal/resources/META-INF/org/apache/logging/log4j/core/config/plugins/Log4j2Plugins.dat new file mode 100644 index 0000000..ac9efe0 Binary files /dev/null and b/log4j-samples-graalvm/src/reachability-metadata/log4j-core-jtl-minimal/resources/META-INF/org/apache/logging/log4j/core/config/plugins/Log4j2Plugins.dat differ diff --git a/log4j-samples-graalvm/src/reachability-metadata/log4j-core-jtl-minimal/resources/log4j2.component.properties b/log4j-samples-graalvm/src/reachability-metadata/log4j-core-jtl-minimal/resources/log4j2.component.properties new file mode 100644 index 0000000..1f0e193 --- /dev/null +++ b/log4j-samples-graalvm/src/reachability-metadata/log4j-core-jtl-minimal/resources/log4j2.component.properties @@ -0,0 +1,18 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to you under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +## +log4j2.configurationFile = log4j2-jtl.xml diff --git a/log4j-samples-graalvm/src/reachability-metadata/log4j-core-jtl/resources/log4j2.component.properties b/log4j-samples-graalvm/src/reachability-metadata/log4j-core-jtl/resources/log4j2.component.properties new file mode 100644 index 0000000..1f0e193 --- /dev/null +++ b/log4j-samples-graalvm/src/reachability-metadata/log4j-core-jtl/resources/log4j2.component.properties @@ -0,0 +1,18 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to you under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +## +log4j2.configurationFile = log4j2-jtl.xml diff --git a/log4j-samples-graalvm/src/reachability-metadata/log4j-core-minimal/Log4j2Plugins.json b/log4j-samples-graalvm/src/reachability-metadata/log4j-core-minimal/Log4j2Plugins.json new file mode 100644 index 0000000..6da7a86 --- /dev/null +++ b/log4j-samples-graalvm/src/reachability-metadata/log4j-core-minimal/Log4j2Plugins.json @@ -0,0 +1,747 @@ +{ + "configurationfactory": { + "org.apache.logging.log4j.core.config.xml.XmlConfigurationFactory": { + "pluginNames": [ + "xmlconfigurationfactory" + ], + "elementName": "XmlConfigurationFactory", + "printable": false, + "defer": false, + "builderHierarchy": [] + } + }, + "converter": { + "org.apache.logging.log4j.core.pattern.AbstractStyleNameConverter$Black": { + "pluginNames": [ + "black" + ], + "elementName": "black", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.pattern.AbstractStyleNameConverter$Blue": { + "pluginNames": [ + "blue" + ], + "elementName": "blue", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.pattern.AbstractStyleNameConverter$Cyan": { + "pluginNames": [ + "cyan" + ], + "elementName": "cyan", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.pattern.AbstractStyleNameConverter$Green": { + "pluginNames": [ + "green" + ], + "elementName": "green", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.pattern.AbstractStyleNameConverter$Magenta": { + "pluginNames": [ + "magenta" + ], + "elementName": "magenta", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.pattern.AbstractStyleNameConverter$Red": { + "pluginNames": [ + "red" + ], + "elementName": "red", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.pattern.AbstractStyleNameConverter$White": { + "pluginNames": [ + "white" + ], + "elementName": "white", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.pattern.AbstractStyleNameConverter$Yellow": { + "pluginNames": [ + "yellow" + ], + "elementName": "yellow", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.pattern.ClassNamePatternConverter": { + "pluginNames": [ + "classnamepatternconverter" + ], + "elementName": "ClassNamePatternConverter", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.pattern.DatePatternConverter": { + "pluginNames": [ + "datepatternconverter" + ], + "elementName": "DatePatternConverter", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.pattern.EncodingPatternConverter": { + "pluginNames": [ + "encode" + ], + "elementName": "encode", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.pattern.EndOfBatchPatternConverter": { + "pluginNames": [ + "endofbatchpatternconverter" + ], + "elementName": "EndOfBatchPatternConverter", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.pattern.EqualsIgnoreCaseReplacementConverter": { + "pluginNames": [ + "equalsignorecase" + ], + "elementName": "equalsIgnoreCase", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.pattern.EqualsReplacementConverter": { + "pluginNames": [ + "equals" + ], + "elementName": "equals", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.pattern.ExtendedThrowablePatternConverter": { + "pluginNames": [ + "extendedthrowablepatternconverter" + ], + "elementName": "ExtendedThrowablePatternConverter", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.pattern.FileLocationPatternConverter": { + "pluginNames": [ + "filelocationpatternconverter" + ], + "elementName": "FileLocationPatternConverter", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.pattern.FullLocationPatternConverter": { + "pluginNames": [ + "fulllocationpatternconverter" + ], + "elementName": "FullLocationPatternConverter", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.pattern.HighlightConverter": { + "pluginNames": [ + "highlight" + ], + "elementName": "highlight", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.pattern.LevelPatternConverter": { + "pluginNames": [ + "levelpatternconverter" + ], + "elementName": "LevelPatternConverter", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.pattern.LineLocationPatternConverter": { + "pluginNames": [ + "linelocationpatternconverter" + ], + "elementName": "LineLocationPatternConverter", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.pattern.LineSeparatorPatternConverter": { + "pluginNames": [ + "lineseparatorpatternconverter" + ], + "elementName": "LineSeparatorPatternConverter", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.pattern.LoggerFqcnPatternConverter": { + "pluginNames": [ + "loggerfqcnpatternconverter" + ], + "elementName": "LoggerFqcnPatternConverter", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.pattern.LoggerPatternConverter": { + "pluginNames": [ + "loggerpatternconverter" + ], + "elementName": "LoggerPatternConverter", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.pattern.MapPatternConverter": { + "pluginNames": [ + "mappatternconverter" + ], + "elementName": "MapPatternConverter", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.pattern.MarkerPatternConverter": { + "pluginNames": [ + "markerpatternconverter" + ], + "elementName": "MarkerPatternConverter", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.pattern.MarkerSimpleNamePatternConverter": { + "pluginNames": [ + "markernamepatternconverter" + ], + "elementName": "MarkerNamePatternConverter", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.pattern.MaxLengthConverter": { + "pluginNames": [ + "maxlength" + ], + "elementName": "maxLength", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.pattern.MdcPatternConverter": { + "pluginNames": [ + "mdcpatternconverter" + ], + "elementName": "MdcPatternConverter", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.pattern.MessagePatternConverter": { + "pluginNames": [ + "messagepatternconverter" + ], + "elementName": "MessagePatternConverter", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.pattern.MethodLocationPatternConverter": { + "pluginNames": [ + "methodlocationpatternconverter" + ], + "elementName": "MethodLocationPatternConverter", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.pattern.NanoTimePatternConverter": { + "pluginNames": [ + "nanotimepatternconverter" + ], + "elementName": "NanoTimePatternConverter", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.pattern.NdcPatternConverter": { + "pluginNames": [ + "ndcpatternconverter" + ], + "elementName": "NdcPatternConverter", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.pattern.ProcessIdPatternConverter": { + "pluginNames": [ + "processidpatternconverter" + ], + "elementName": "ProcessIdPatternConverter", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.pattern.RegexReplacementConverter": { + "pluginNames": [ + "replace" + ], + "elementName": "replace", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.pattern.RelativeTimePatternConverter": { + "pluginNames": [ + "relativetimepatternconverter" + ], + "elementName": "RelativeTimePatternConverter", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.pattern.RepeatPatternConverter": { + "pluginNames": [ + "repeat" + ], + "elementName": "repeat", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.pattern.RootThrowablePatternConverter": { + "pluginNames": [ + "rootthrowablepatternconverter" + ], + "elementName": "RootThrowablePatternConverter", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.pattern.SequenceNumberPatternConverter": { + "pluginNames": [ + "sequencenumberpatternconverter" + ], + "elementName": "SequenceNumberPatternConverter", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.pattern.StyleConverter": { + "pluginNames": [ + "style" + ], + "elementName": "style", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.pattern.ThreadIdPatternConverter": { + "pluginNames": [ + "threadidpatternconverter" + ], + "elementName": "ThreadIdPatternConverter", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.pattern.ThreadNamePatternConverter": { + "pluginNames": [ + "threadpatternconverter" + ], + "elementName": "ThreadPatternConverter", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.pattern.ThreadPriorityPatternConverter": { + "pluginNames": [ + "threadprioritypatternconverter" + ], + "elementName": "ThreadPriorityPatternConverter", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.pattern.ThrowablePatternConverter": { + "pluginNames": [ + "throwablepatternconverter" + ], + "elementName": "ThrowablePatternConverter", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.pattern.UuidPatternConverter": { + "pluginNames": [ + "uuidpatternconverter" + ], + "elementName": "UuidPatternConverter", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.pattern.VariablesNotEmptyReplacementConverter": { + "pluginNames": [ + "notempty" + ], + "elementName": "notEmpty", + "printable": false, + "defer": false, + "builderHierarchy": [] + } + }, + "core": { + "org.apache.logging.log4j.core.appender.ConsoleAppender": { + "pluginNames": [ + "console" + ], + "elementName": "appender", + "printable": true, + "defer": false, + "builderHierarchy": [ + "org.apache.logging.log4j.core.appender.ConsoleAppender$Builder", + "org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender$Builder", + "org.apache.logging.log4j.core.appender.AbstractAppender$Builder", + "org.apache.logging.log4j.core.filter.AbstractFilterable$Builder" + ] + }, + "org.apache.logging.log4j.core.appender.FileAppender": { + "pluginNames": [ + "file" + ], + "elementName": "appender", + "printable": true, + "defer": false, + "builderHierarchy": [ + "org.apache.logging.log4j.core.appender.FileAppender$Builder", + "org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender$Builder", + "org.apache.logging.log4j.core.appender.AbstractAppender$Builder", + "org.apache.logging.log4j.core.filter.AbstractFilterable$Builder" + ] + }, + "org.apache.logging.log4j.core.config.AppenderRef": { + "pluginNames": [ + "appender-ref", + "appenderref" + ], + "elementName": "appender-ref", + "printable": true, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.config.AppendersPlugin": { + "pluginNames": [ + "appenders" + ], + "elementName": "Appenders", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.config.LoggerConfig": { + "pluginNames": [ + "logger" + ], + "elementName": "Logger", + "printable": true, + "defer": false, + "builderHierarchy": [ + "org.apache.logging.log4j.core.config.LoggerConfig$Builder" + ] + }, + "org.apache.logging.log4j.core.config.LoggerConfig$RootLogger": { + "pluginNames": [ + "root" + ], + "elementName": "Root", + "printable": true, + "defer": false, + "builderHierarchy": [ + "org.apache.logging.log4j.core.config.LoggerConfig$RootLogger$Builder" + ] + }, + "org.apache.logging.log4j.core.config.LoggersPlugin": { + "pluginNames": [ + "loggers" + ], + "elementName": "Loggers", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.layout.PatternLayout": { + "pluginNames": [ + "patternlayout" + ], + "elementName": "layout", + "printable": true, + "defer": false, + "builderHierarchy": [ + "org.apache.logging.log4j.core.layout.PatternLayout$Builder" + ] + } + }, + "typeconverter": { + "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$BigDecimalConverter": { + "pluginNames": [ + "bigdecimal" + ], + "elementName": "BigDecimal", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$BigIntegerConverter": { + "pluginNames": [ + "biginteger" + ], + "elementName": "BigInteger", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$BooleanConverter": { + "pluginNames": [ + "boolean" + ], + "elementName": "Boolean", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$ByteArrayConverter": { + "pluginNames": [ + "bytearray" + ], + "elementName": "ByteArray", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$ByteConverter": { + "pluginNames": [ + "byte" + ], + "elementName": "Byte", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$CharArrayConverter": { + "pluginNames": [ + "characterarray" + ], + "elementName": "CharacterArray", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$CharacterConverter": { + "pluginNames": [ + "character" + ], + "elementName": "Character", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$CharsetConverter": { + "pluginNames": [ + "charset" + ], + "elementName": "Charset", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$ClassConverter": { + "pluginNames": [ + "class" + ], + "elementName": "Class", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$CronExpressionConverter": { + "pluginNames": [ + "cronexpression" + ], + "elementName": "CronExpression", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$DoubleConverter": { + "pluginNames": [ + "double" + ], + "elementName": "Double", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$DurationConverter": { + "pluginNames": [ + "duration" + ], + "elementName": "Duration", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$FileConverter": { + "pluginNames": [ + "file" + ], + "elementName": "File", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$FloatConverter": { + "pluginNames": [ + "float" + ], + "elementName": "Float", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$InetAddressConverter": { + "pluginNames": [ + "inetaddress" + ], + "elementName": "InetAddress", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$IntegerConverter": { + "pluginNames": [ + "integer" + ], + "elementName": "Integer", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$LevelConverter": { + "pluginNames": [ + "level" + ], + "elementName": "Level", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$LongConverter": { + "pluginNames": [ + "long" + ], + "elementName": "Long", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$PathConverter": { + "pluginNames": [ + "path" + ], + "elementName": "Path", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$PatternConverter": { + "pluginNames": [ + "pattern" + ], + "elementName": "Pattern", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$SecurityProviderConverter": { + "pluginNames": [ + "securityprovider" + ], + "elementName": "SecurityProvider", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$ShortConverter": { + "pluginNames": [ + "short" + ], + "elementName": "Short", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$StringConverter": { + "pluginNames": [ + "string" + ], + "elementName": "String", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$UriConverter": { + "pluginNames": [ + "uri" + ], + "elementName": "URI", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$UrlConverter": { + "pluginNames": [ + "url" + ], + "elementName": "URL", + "printable": false, + "defer": false, + "builderHierarchy": [] + }, + "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$UuidConverter": { + "pluginNames": [ + "uuid" + ], + "elementName": "UUID", + "printable": false, + "defer": false, + "builderHierarchy": [] + } + } +} \ No newline at end of file diff --git a/log4j-samples-graalvm/src/reachability-metadata/log4j-core-minimal/resources/META-INF/native-image/org.apache.logging.log4j/log4j-core/reflect-config.json b/log4j-samples-graalvm/src/reachability-metadata/log4j-core-minimal/resources/META-INF/native-image/org.apache.logging.log4j/log4j-core/reflect-config.json new file mode 100644 index 0000000..e9991af --- /dev/null +++ b/log4j-samples-graalvm/src/reachability-metadata/log4j-core-minimal/resources/META-INF/native-image/org.apache.logging.log4j/log4j-core/reflect-config.json @@ -0,0 +1,1320 @@ +[ + { + "name": "org.apache.logging.log4j.core.appender.AbstractAppender$Builder", + "methods": [], + "fields": [ + { + "name": "configuration" + }, + { + "name": "ignoreExceptions" + }, + { + "name": "layout" + }, + { + "name": "name" + } + ] + }, + { + "name": "org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender$Builder", + "methods": [], + "fields": [ + { + "name": "bufferSize" + }, + { + "name": "bufferedIo" + }, + { + "name": "immediateFlush" + } + ] + }, + { + "name": "org.apache.logging.log4j.core.appender.ConsoleAppender", + "methods": [ + { + "name": "newBuilder", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.appender.ConsoleAppender$Builder", + "methods": [], + "fields": [ + { + "name": "direct" + }, + { + "name": "follow" + }, + { + "name": "target" + } + ] + }, + { + "name": "org.apache.logging.log4j.core.appender.FileAppender", + "methods": [ + { + "name": "newBuilder", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.appender.FileAppender$Builder", + "methods": [], + "fields": [ + { + "name": "advertise" + }, + { + "name": "advertiseUri" + }, + { + "name": "append" + }, + { + "name": "createOnDemand" + }, + { + "name": "fileGroup" + }, + { + "name": "fileName" + }, + { + "name": "fileOwner" + }, + { + "name": "filePermissions" + }, + { + "name": "locking" + } + ] + }, + { + "name": "org.apache.logging.log4j.core.config.AppenderRef", + "methods": [ + { + "name": "createAppenderRef", + "parameterTypes": [ + "java.lang.String", + "org.apache.logging.log4j.Level", + "org.apache.logging.log4j.core.Filter" + ] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.config.AppendersPlugin", + "methods": [ + { + "name": "createAppenders", + "parameterTypes": [ + "org.apache.logging.log4j.core.Appender[]" + ] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.config.LoggerConfig", + "methods": [ + { + "name": "<init>", + "parameterTypes": [] + }, + { + "name": "<init>", + "parameterTypes": [ + "java.lang.String", + "org.apache.logging.log4j.Level", + "boolean" + ] + }, + { + "name": "newBuilder", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.config.LoggerConfig$Builder", + "methods": [], + "fields": [ + { + "name": "additivity" + }, + { + "name": "config" + }, + { + "name": "filter" + }, + { + "name": "includeLocation" + }, + { + "name": "level" + }, + { + "name": "levelAndRefs" + }, + { + "name": "loggerName" + }, + { + "name": "properties" + }, + { + "name": "refs" + } + ] + }, + { + "name": "org.apache.logging.log4j.core.config.LoggerConfig$RootLogger", + "methods": [ + { + "name": "<init>", + "parameterTypes": [] + }, + { + "name": "newRootBuilder", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.config.LoggerConfig$RootLogger$Builder", + "methods": [], + "fields": [ + { + "name": "additivity" + }, + { + "name": "config" + }, + { + "name": "filter" + }, + { + "name": "includeLocation" + }, + { + "name": "level" + }, + { + "name": "levelAndRefs" + }, + { + "name": "properties" + }, + { + "name": "refs" + } + ] + }, + { + "name": "org.apache.logging.log4j.core.config.LoggersPlugin", + "methods": [ + { + "name": "createLoggers", + "parameterTypes": [ + "org.apache.logging.log4j.core.config.LoggerConfig[]" + ] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$BigDecimalConverter", + "methods": [ + { + "name": "<init>", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$BigIntegerConverter", + "methods": [ + { + "name": "<init>", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$BooleanConverter", + "methods": [ + { + "name": "<init>", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$ByteArrayConverter", + "methods": [ + { + "name": "<init>", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$ByteConverter", + "methods": [ + { + "name": "<init>", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$CharArrayConverter", + "methods": [ + { + "name": "<init>", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$CharacterConverter", + "methods": [ + { + "name": "<init>", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$CharsetConverter", + "methods": [ + { + "name": "<init>", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$ClassConverter", + "methods": [ + { + "name": "<init>", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$CronExpressionConverter", + "methods": [ + { + "name": "<init>", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$DoubleConverter", + "methods": [ + { + "name": "<init>", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$DurationConverter", + "methods": [ + { + "name": "<init>", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$FileConverter", + "methods": [ + { + "name": "<init>", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$FloatConverter", + "methods": [ + { + "name": "<init>", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$InetAddressConverter", + "methods": [ + { + "name": "<init>", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$IntegerConverter", + "methods": [ + { + "name": "<init>", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$LevelConverter", + "methods": [ + { + "name": "<init>", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$LongConverter", + "methods": [ + { + "name": "<init>", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$PathConverter", + "methods": [ + { + "name": "<init>", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$PatternConverter", + "methods": [ + { + "name": "<init>", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$SecurityProviderConverter", + "methods": [ + { + "name": "<init>", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$ShortConverter", + "methods": [ + { + "name": "<init>", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$StringConverter", + "methods": [ + { + "name": "<init>", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$UriConverter", + "methods": [ + { + "name": "<init>", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$UrlConverter", + "methods": [ + { + "name": "<init>", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$UuidConverter", + "methods": [ + { + "name": "<init>", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.config.plugins.validation.validators.NotBlankValidator", + "methods": [ + { + "name": "<init>", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.config.plugins.validation.validators.RequiredValidator", + "methods": [ + { + "name": "<init>", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.config.plugins.validation.validators.ValidHostValidator", + "methods": [ + { + "name": "<init>", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.config.plugins.validation.validators.ValidPortValidator", + "methods": [ + { + "name": "<init>", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.config.plugins.visitors.PluginAttributeVisitor", + "methods": [ + { + "name": "<init>", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.config.plugins.visitors.PluginBuilderAttributeVisitor", + "methods": [ + { + "name": "<init>", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.config.plugins.visitors.PluginConfigurationVisitor", + "methods": [ + { + "name": "<init>", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.config.plugins.visitors.PluginElementVisitor", + "methods": [ + { + "name": "<init>", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.config.plugins.visitors.PluginLoggerContextVisitor", + "methods": [ + { + "name": "<init>", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.config.plugins.visitors.PluginNodeVisitor", + "methods": [ + { + "name": "<init>", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.config.plugins.visitors.PluginValueVisitor", + "methods": [ + { + "name": "<init>", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.config.xml.XmlConfigurationFactory", + "methods": [ + { + "name": "<init>", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.filter.AbstractFilterable$Builder", + "methods": [], + "fields": [ + { + "name": "filter" + }, + { + "name": "propertyArray" + } + ] + }, + { + "name": "org.apache.logging.log4j.core.layout.PatternLayout", + "methods": [ + { + "name": "createLayout", + "parameterTypes": [ + "java.lang.String", + "org.apache.logging.log4j.core.layout.PatternSelector", + "org.apache.logging.log4j.core.config.Configuration", + "org.apache.logging.log4j.core.pattern.RegexReplacement", + "java.nio.charset.Charset", + "boolean", + "boolean", + "java.lang.String", + "java.lang.String" + ] + }, + { + "name": "newBuilder", + "parameterTypes": [] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.layout.PatternLayout$Builder", + "methods": [], + "fields": [ + { + "name": "alwaysWriteExceptions" + }, + { + "name": "charset" + }, + { + "name": "configuration" + }, + { + "name": "disableAnsi" + }, + { + "name": "footer" + }, + { + "name": "header" + }, + { + "name": "noConsoleNoAnsi" + }, + { + "name": "pattern" + }, + { + "name": "patternSelector" + }, + { + "name": "regexReplacement" + } + ] + }, + { + "name": "org.apache.logging.log4j.core.pattern.AbstractStyleNameConverter$Black", + "methods": [ + { + "name": "<init>", + "parameterTypes": [ + "java.util.List", + "java.lang.String" + ] + }, + { + "name": "newInstance", + "parameterTypes": [ + "org.apache.logging.log4j.core.config.Configuration", + "java.lang.String[]" + ] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.pattern.AbstractStyleNameConverter$Blue", + "methods": [ + { + "name": "<init>", + "parameterTypes": [ + "java.util.List", + "java.lang.String" + ] + }, + { + "name": "newInstance", + "parameterTypes": [ + "org.apache.logging.log4j.core.config.Configuration", + "java.lang.String[]" + ] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.pattern.AbstractStyleNameConverter$Cyan", + "methods": [ + { + "name": "<init>", + "parameterTypes": [ + "java.util.List", + "java.lang.String" + ] + }, + { + "name": "newInstance", + "parameterTypes": [ + "org.apache.logging.log4j.core.config.Configuration", + "java.lang.String[]" + ] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.pattern.AbstractStyleNameConverter$Green", + "methods": [ + { + "name": "<init>", + "parameterTypes": [ + "java.util.List", + "java.lang.String" + ] + }, + { + "name": "newInstance", + "parameterTypes": [ + "org.apache.logging.log4j.core.config.Configuration", + "java.lang.String[]" + ] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.pattern.AbstractStyleNameConverter$Magenta", + "methods": [ + { + "name": "<init>", + "parameterTypes": [ + "java.util.List", + "java.lang.String" + ] + }, + { + "name": "newInstance", + "parameterTypes": [ + "org.apache.logging.log4j.core.config.Configuration", + "java.lang.String[]" + ] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.pattern.AbstractStyleNameConverter$Red", + "methods": [ + { + "name": "<init>", + "parameterTypes": [ + "java.util.List", + "java.lang.String" + ] + }, + { + "name": "newInstance", + "parameterTypes": [ + "org.apache.logging.log4j.core.config.Configuration", + "java.lang.String[]" + ] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.pattern.AbstractStyleNameConverter$White", + "methods": [ + { + "name": "<init>", + "parameterTypes": [ + "java.util.List", + "java.lang.String" + ] + }, + { + "name": "newInstance", + "parameterTypes": [ + "org.apache.logging.log4j.core.config.Configuration", + "java.lang.String[]" + ] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.pattern.AbstractStyleNameConverter$Yellow", + "methods": [ + { + "name": "<init>", + "parameterTypes": [ + "java.util.List", + "java.lang.String" + ] + }, + { + "name": "newInstance", + "parameterTypes": [ + "org.apache.logging.log4j.core.config.Configuration", + "java.lang.String[]" + ] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.pattern.ClassNamePatternConverter", + "methods": [ + { + "name": "newInstance", + "parameterTypes": [ + "java.lang.String[]" + ] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.pattern.DatePatternConverter", + "methods": [ + { + "name": "newInstance", + "parameterTypes": [ + "java.lang.String[]" + ] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.pattern.EncodingPatternConverter", + "methods": [ + { + "name": "newInstance", + "parameterTypes": [ + "org.apache.logging.log4j.core.config.Configuration", + "java.lang.String[]" + ] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.pattern.EndOfBatchPatternConverter", + "methods": [ + { + "name": "newInstance", + "parameterTypes": [ + "java.lang.String[]" + ] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.pattern.EqualsIgnoreCaseReplacementConverter", + "methods": [ + { + "name": "newInstance", + "parameterTypes": [ + "org.apache.logging.log4j.core.config.Configuration", + "java.lang.String[]" + ] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.pattern.EqualsReplacementConverter", + "methods": [ + { + "name": "newInstance", + "parameterTypes": [ + "org.apache.logging.log4j.core.config.Configuration", + "java.lang.String[]" + ] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.pattern.ExtendedThrowablePatternConverter", + "methods": [ + { + "name": "newInstance", + "parameterTypes": [ + "org.apache.logging.log4j.core.config.Configuration", + "@org.jspecify.annotations.Nullable java.lang.String[]" + ] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.pattern.FileLocationPatternConverter", + "methods": [ + { + "name": "newInstance", + "parameterTypes": [ + "java.lang.String[]" + ] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.pattern.FullLocationPatternConverter", + "methods": [ + { + "name": "newInstance", + "parameterTypes": [ + "java.lang.String[]" + ] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.pattern.HighlightConverter", + "methods": [ + { + "name": "newInstance", + "parameterTypes": [ + "org.apache.logging.log4j.core.config.Configuration", + "java.lang.String[]" + ] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.pattern.LevelPatternConverter", + "methods": [ + { + "name": "newInstance", + "parameterTypes": [ + "java.lang.String[]" + ] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.pattern.LineLocationPatternConverter", + "methods": [ + { + "name": "newInstance", + "parameterTypes": [ + "java.lang.String[]" + ] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.pattern.LineSeparatorPatternConverter", + "methods": [ + { + "name": "newInstance", + "parameterTypes": [ + "java.lang.String[]" + ] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.pattern.LoggerFqcnPatternConverter", + "methods": [ + { + "name": "newInstance", + "parameterTypes": [ + "java.lang.String[]" + ] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.pattern.LoggerPatternConverter", + "methods": [ + { + "name": "newInstance", + "parameterTypes": [ + "java.lang.String[]" + ] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.pattern.MapPatternConverter", + "methods": [ + { + "name": "newInstance", + "parameterTypes": [ + "java.lang.String[]" + ] + }, + { + "name": "newInstance", + "parameterTypes": [ + "java.lang.String[]", + "org.apache.logging.log4j.message.MapMessage.MapFormat" + ] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.pattern.MarkerPatternConverter", + "methods": [ + { + "name": "newInstance", + "parameterTypes": [ + "java.lang.String[]" + ] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.pattern.MarkerSimpleNamePatternConverter", + "methods": [ + { + "name": "newInstance", + "parameterTypes": [ + "java.lang.String[]" + ] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.pattern.MaxLengthConverter", + "methods": [ + { + "name": "newInstance", + "parameterTypes": [ + "org.apache.logging.log4j.core.config.Configuration", + "java.lang.String[]" + ] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.pattern.MdcPatternConverter", + "methods": [ + { + "name": "newInstance", + "parameterTypes": [ + "java.lang.String[]" + ] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.pattern.MessagePatternConverter", + "methods": [ + { + "name": "newInstance", + "parameterTypes": [ + "org.apache.logging.log4j.core.config.Configuration", + "java.lang.String[]" + ] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.pattern.MethodLocationPatternConverter", + "methods": [ + { + "name": "newInstance", + "parameterTypes": [ + "java.lang.String[]" + ] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.pattern.NanoTimePatternConverter", + "methods": [ + { + "name": "newInstance", + "parameterTypes": [ + "java.lang.String[]" + ] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.pattern.NdcPatternConverter", + "methods": [ + { + "name": "newInstance", + "parameterTypes": [ + "java.lang.String[]" + ] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.pattern.ProcessIdPatternConverter", + "methods": [ + { + "name": "newInstance", + "parameterTypes": [ + "java.lang.String[]" + ] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.pattern.RegexReplacementConverter", + "methods": [ + { + "name": "newInstance", + "parameterTypes": [ + "org.apache.logging.log4j.core.config.Configuration", + "java.lang.String[]" + ] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.pattern.RelativeTimePatternConverter", + "methods": [ + { + "name": "<init>", + "parameterTypes": [] + }, + { + "name": "newInstance", + "parameterTypes": [ + "java.lang.String[]" + ] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.pattern.RepeatPatternConverter", + "methods": [ + { + "name": "newInstance", + "parameterTypes": [ + "org.apache.logging.log4j.core.config.Configuration", + "java.lang.String[]" + ] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.pattern.RootThrowablePatternConverter", + "methods": [ + { + "name": "newInstance", + "parameterTypes": [ + "org.apache.logging.log4j.core.config.Configuration", + "@org.jspecify.annotations.Nullable java.lang.String[]" + ] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.pattern.SequenceNumberPatternConverter", + "methods": [ + { + "name": "newInstance", + "parameterTypes": [ + "java.lang.String[]" + ] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.pattern.StyleConverter", + "methods": [ + { + "name": "newInstance", + "parameterTypes": [ + "org.apache.logging.log4j.core.config.Configuration", + "java.lang.String[]" + ] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.pattern.ThreadIdPatternConverter", + "methods": [ + { + "name": "newInstance", + "parameterTypes": [ + "java.lang.String[]" + ] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.pattern.ThreadNamePatternConverter", + "methods": [ + { + "name": "newInstance", + "parameterTypes": [ + "java.lang.String[]" + ] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.pattern.ThreadPriorityPatternConverter", + "methods": [ + { + "name": "newInstance", + "parameterTypes": [ + "java.lang.String[]" + ] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.pattern.ThrowablePatternConverter", + "methods": [ + { + "name": "newInstance", + "parameterTypes": [ + "org.apache.logging.log4j.core.config.Configuration", + "@org.jspecify.annotations.Nullable java.lang.String[]" + ] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.pattern.UuidPatternConverter", + "methods": [ + { + "name": "newInstance", + "parameterTypes": [ + "java.lang.String[]" + ] + } + ], + "fields": [] + }, + { + "name": "org.apache.logging.log4j.core.pattern.VariablesNotEmptyReplacementConverter", + "methods": [ + { + "name": "newInstance", + "parameterTypes": [ + "org.apache.logging.log4j.core.config.Configuration", + "java.lang.String[]" + ] + } + ], + "fields": [] + } +] \ No newline at end of file diff --git a/log4j-samples-graalvm/src/reachability-metadata/log4j-core-minimal/resources/META-INF/org/apache/logging/log4j/core/config/plugins/Log4j2Plugins.dat b/log4j-samples-graalvm/src/reachability-metadata/log4j-core-minimal/resources/META-INF/org/apache/logging/log4j/core/config/plugins/Log4j2Plugins.dat new file mode 100644 index 0000000..c81c04b Binary files /dev/null and b/log4j-samples-graalvm/src/reachability-metadata/log4j-core-minimal/resources/META-INF/org/apache/logging/log4j/core/config/plugins/Log4j2Plugins.dat differ diff --git a/log4j-samples-graalvm/src/reachability-metadata/jul/resource-config.json b/log4j-samples-graalvm/src/reachability-metadata/logback/resources/META-INF/native-image/ch.qos.logback/logback-classic/resource-config.json similarity index 64% rename from log4j-samples-graalvm/src/reachability-metadata/jul/resource-config.json rename to log4j-samples-graalvm/src/reachability-metadata/logback/resources/META-INF/native-image/ch.qos.logback/logback-classic/resource-config.json index 6f02a9c..c80b0a7 100644 --- a/log4j-samples-graalvm/src/reachability-metadata/jul/resource-config.json +++ b/log4j-samples-graalvm/src/reachability-metadata/logback/resources/META-INF/native-image/ch.qos.logback/logback-classic/resource-config.json @@ -2,7 +2,7 @@ "resources": { "includes": [ { - "pattern": "\\Qlogging.properties\\E" + "pattern": "logback\\.xml" } ] }, diff --git a/log4j-samples-graalvm/src/reachability-metadata/minimal/index.json b/log4j-samples-graalvm/src/reachability-metadata/minimal/index.json deleted file mode 100644 index 1f75790..0000000 --- a/log4j-samples-graalvm/src/reachability-metadata/minimal/index.json +++ /dev/null @@ -1,9 +0,0 @@ -[ - { - "allowed-packages": [ - "org.apache.logging.log4j.core" - ], - "directory": "log4j-core", - "module": "org.apache.logging.log4j:log4j-core" - } -] \ No newline at end of file diff --git a/log4j-samples-graalvm/src/reachability-metadata/minimal/log4j-core/2.24.0/index.json b/log4j-samples-graalvm/src/reachability-metadata/minimal/log4j-core/2.24.0/index.json deleted file mode 100644 index 93a3dda..0000000 --- a/log4j-samples-graalvm/src/reachability-metadata/minimal/log4j-core/2.24.0/index.json +++ /dev/null @@ -1,4 +0,0 @@ -[ - "reflect-config.json", - "resource-config.json" -] \ No newline at end of file diff --git a/log4j-samples-graalvm/src/reachability-metadata/minimal/log4j-core/2.24.0/resource-config.json b/log4j-samples-graalvm/src/reachability-metadata/minimal/log4j-core/2.24.0/resource-config.json deleted file mode 100644 index dd9527e..0000000 --- a/log4j-samples-graalvm/src/reachability-metadata/minimal/log4j-core/2.24.0/resource-config.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "resources": { - "includes": [ - { - "pattern": "\\QMETA-INF/org/apache/logging/log4j/core/config/plugins/Log4j2Plugins.dat\\E" - }, - { - "pattern": "\\QMETA-INF/services/org.apache.logging.log4j.core.util.ContextDataProvider\\E" - }, - { - "pattern": "\\QMETA-INF/services/org.apache.logging.log4j.spi.Provider\\E" - }, - { - "pattern": "\\QMETA-INF/services/org.apache.logging.log4j.util.PropertySource\\E" - }, - { - "pattern": "\\Qlog4j2.xml\\E" - } - ] - }, - "bundles": [] -} diff --git a/log4j-samples-graalvm/src/reachability-metadata/minimal/log4j-core/index.json b/log4j-samples-graalvm/src/reachability-metadata/minimal/log4j-core/index.json deleted file mode 100644 index f55d820..0000000 --- a/log4j-samples-graalvm/src/reachability-metadata/minimal/log4j-core/index.json +++ /dev/null @@ -1,11 +0,0 @@ -[ - { - "latest": true, - "metadata-version": "2.24.0", - "default-for": "2\\.24\\..*", - "module": "org.apache.logging.log4j:log4j-core", - "tested-versions": [ - "2.24.0-SNAPSHOT" - ] - } -] \ No newline at end of file diff --git a/log4j-samples-graalvm/src/reachability-metadata/simple/resources/log4j2.component.properties b/log4j-samples-graalvm/src/reachability-metadata/simple/resources/log4j2.component.properties new file mode 100644 index 0000000..3a3f6f3 --- /dev/null +++ b/log4j-samples-graalvm/src/reachability-metadata/simple/resources/log4j2.component.properties @@ -0,0 +1,19 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to you under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +## +# Opt-in to use Simple Logger +log4j.provider = org.apache.logging.log4j.simple.internal.SimpleProvider
