From 1132f08c57d46e80bc502965aa6d6330f85857bc Mon Sep 17 00:00:00 2001 From: PoAn Yang Date: Wed, 19 Feb 2025 00:48:46 +0800 Subject: [PATCH] KAFKA-18773 Migrate the log4j1 config to log4j 2 for native image and README (#18872) - update reflection-config.json and resource-config.json to include log4j2 and jackson - remove unused jackson scala library - fix the incorrect path of log4j2.yaml - adopt workaround (--standalone) to make this PR work and it will be fixed by KAFKA-18737) Reviewers: TengYao Chi , Chia-Ping Tsai --- build.gradle | 1 - .../kafka/docker/KafkaDockerWrapper.scala | 6 +- .../kafka/docker/KafkaDockerWrapperTest.scala | 2 +- docker/examples/README.md | 6 +- docker/native/README.md | 5 + docker/native/launch | 5 +- .../native-image-configs/jni-config.json | 22 +- .../predefined-classes-config.json | 1 + .../native-image-configs/proxy-config.json | 2 +- .../native-image-configs/reflect-config.json | 1302 ++++++++++++++++- .../native-image-configs/resource-config.json | 86 +- .../serialization-config.json | 2 +- gradle/dependencies.gradle | 1 - 13 files changed, 1409 insertions(+), 32 deletions(-) diff --git a/build.gradle b/build.gradle index 7d335c4040d..94442eccf17 100644 --- a/build.gradle +++ b/build.gradle @@ -1072,7 +1072,6 @@ project(':core') { implementation libs.argparse4j implementation libs.commonsValidator implementation libs.jacksonDatabind - implementation libs.jacksonModuleScala implementation libs.jacksonDataformatCsv implementation libs.jacksonJDK8Datatypes implementation libs.jacksonDatabindYaml diff --git a/core/src/main/scala/kafka/docker/KafkaDockerWrapper.scala b/core/src/main/scala/kafka/docker/KafkaDockerWrapper.scala index c0b586d1bf6..00c040488af 100644 --- a/core/src/main/scala/kafka/docker/KafkaDockerWrapper.scala +++ b/core/src/main/scala/kafka/docker/KafkaDockerWrapper.scala @@ -110,7 +110,7 @@ object KafkaDockerWrapper extends Logging { case Some(str) => str case None => throw new RuntimeException("CLUSTER_ID environment variable is not set.") } - Array("format", "--cluster-id=" + clusterId, "-c", s"${configsPath.toString}/server.properties") + Array("format", "--cluster-id=" + clusterId, "-c", s"${configsPath.toString}/server.properties", "--standalone") } private def prepareConfigs(defaultConfigsPath: Path, mountedConfigsPath: Path, finalConfigsPath: Path): Unit = { @@ -250,10 +250,6 @@ object KafkaDockerWrapper extends Logging { } val config = yaml.getConfiguration - if (config == null && loggerFromEnv.isEmpty && rootOption.isEmpty) { - return - } - if (config == null) { generateDefaultLog4jConfig(loggerFromEnv, rootOption, filepath, mapper) } else { diff --git a/core/src/test/scala/unit/kafka/docker/KafkaDockerWrapperTest.scala b/core/src/test/scala/unit/kafka/docker/KafkaDockerWrapperTest.scala index 81dcad01a99..6940941a931 100644 --- a/core/src/test/scala/unit/kafka/docker/KafkaDockerWrapperTest.scala +++ b/core/src/test/scala/unit/kafka/docker/KafkaDockerWrapperTest.scala @@ -133,7 +133,7 @@ class KafkaDockerWrapperTest { val configsPath = Paths.get("/path/to/configs") val envVars = Map("CLUSTER_ID" -> "MYwKGPhXQZidgd0qMv8Mkw") - val expected = Array("format", "--cluster-id=MYwKGPhXQZidgd0qMv8Mkw", "-c", "/path/to/configs/server.properties") + val expected = Array("format", "--cluster-id=MYwKGPhXQZidgd0qMv8Mkw", "-c", "/path/to/configs/server.properties", "--standalone") val actual = KafkaDockerWrapper.formatStorageCmd(configsPath, envVars) assertArrayEquals(expected.toArray[Object], actual.toArray[Object]) diff --git a/docker/examples/README.md b/docker/examples/README.md index 159713ed31b..bd6fcefd828 100644 --- a/docker/examples/README.md +++ b/docker/examples/README.md @@ -48,11 +48,11 @@ It is also possible to use the input file to have a common set of configurations - To provide configs to log4j property files, following points should be considered: - log4j properties provided via environment variables will be appended to the default properties file (log4j properties files bundled with Kafka). - - `KAFKA_LOG4J_ROOT_LOGLEVEL` can be provided to set the value of `log4j.rootLogger` in log4j.properties and `tools-log4j.properties`. - - log4j loggers can be added to log4j.properties by setting them in `KAFKA_LOG4J_LOGGERS` environment variable in a single comma separated string. + - `KAFKA_LOG4J_ROOT_LOGLEVEL` can be provided to set the value of `log4j.rootLogger` in `log4j2.yaml` and `tools-log4j2.yaml`. + - log4j loggers can be added to `log4j2.yaml` by setting them in `KAFKA_LOG4J_LOGGERS` environment variable in a single comma separated string. - Example: - Assuming that `KAFKA_LOG4J_LOGGERS='property1=value1,property2=value2'` environment variable is provided to Docker container. - - `log4j.logger.property1=value1` and `log4j.logger.property2=value2` will be added to the `log4j.properties` file inside Docker container. + - `log4j.logger.property1=value1` and `log4j.logger.property2=value2` will be added to the `log4j2.yaml` file inside Docker container. Running in SSL mode ------------------- diff --git a/docker/native/README.md b/docker/native/README.md index 0700dce346c..42f38bf4e92 100644 --- a/docker/native/README.md +++ b/docker/native/README.md @@ -15,6 +15,11 @@ These metadata configs are provided in the `native-image-configs` directory. GraalVM provide an option to create these configs automatically by running the application normally with the [native-image agent](https://www.graalvm.org/latest/reference-manual/native-image/metadata/AutomaticMetadataCollection/) attached. The configs in the `native-image-configs` directory are generated by running existing Apache Kafka System Tests(using GraalVM JIT and attaching the native-image agent to the process) as they are quite exhaustive. +To update reachability metadata, users can set following environment variable and run related jar files. New metadata configs will be generated in the `native-image-configs` directory. +```bash +export JAVA_TOOL_OPTIONS="-agentlib:native-image-agent=config-merge-dir=/path/to/kafka/docker/native/native-image-configs" +``` + ## Limitations of Native Apache Kafka executable - Dynamic Features: For any new dynamic feature added or modified in Apache Kafka, the corresponding metadata configurations must be added or updated in the `native-image-configs`. As of now these configs are static. - Runtime Jars: Native Kafka Executable does not support capabilities that require a new runtime jar provided by the user, as the jar's information is not available during build time. In such cases, a new native Kafka binary must be built, including that jar in the classpath during the build. diff --git a/docker/native/launch b/docker/native/launch index 93de7aa9483..9e599e7723a 100755 --- a/docker/native/launch +++ b/docker/native/launch @@ -41,12 +41,11 @@ fi result=$(/opt/kafka/kafka.Kafka setup \ --default-configs-dir /etc/kafka/docker \ --mounted-configs-dir /mnt/shared/config \ - --final-configs-dir /opt/kafka/config \ - -Dlog4j.configuration=file:/opt/kafka/config/tools-log4j.properties 2>&1) || \ + --final-configs-dir /opt/kafka/config 2>&1) || \ echo $result | grep -i "already formatted" || \ { echo $result && (exit 1) } echo "WARNING: THIS IS AN EXPERIMENTAL DOCKER IMAGE RECOMMENDED FOR LOCAL TESTING AND DEVELOPMENT PURPOSES." -KAFKA_LOG4J_CMD_OPTS="-Dkafka.logs.dir=/opt/kafka/logs/ -Dlog4j.configuration=file:/opt/kafka/config/log4j.properties" +KAFKA_LOG4J_CMD_OPTS="-Dkafka.logs.dir=/opt/kafka/logs/ -Dlog4j2.configurationFile=file:/opt/kafka/config/log4j2.yaml" exec /opt/kafka/kafka.Kafka start --config /opt/kafka/config/server.properties $KAFKA_LOG4J_CMD_OPTS $KAFKA_JMX_OPTS ${KAFKA_OPTS-} diff --git a/docker/native/native-image-configs/jni-config.json b/docker/native/native-image-configs/jni-config.json index 50b6bf1fd6d..001d7748828 100644 --- a/docker/native/native-image-configs/jni-config.json +++ b/docker/native/native-image-configs/jni-config.json @@ -24,12 +24,32 @@ { "name":"java.lang.OutOfMemoryError" }, +{ + "name":"java.lang.String", + "methods":[{"name":"lastIndexOf","parameterTypes":["int"] }, {"name":"substring","parameterTypes":["int"] }] +}, +{ + "name":"java.lang.System", + "methods":[{"name":"getProperty","parameterTypes":["java.lang.String"] }, {"name":"setProperty","parameterTypes":["java.lang.String","java.lang.String"] }] +}, +{ + "name":"java.lang.VersionProps", + "methods":[{"name":"print","parameterTypes":["boolean"] }] +}, { "name":"java.util.Arrays", "methods":[{"name":"asList","parameterTypes":["java.lang.Object[]"] }] }, +{ + "name":"kafka.Kafka", + "methods":[{"name":"main","parameterTypes":["java.lang.String[]"] }] +}, +{ + "name":"kafka.tools.StorageTool", + "methods":[{"name":"main","parameterTypes":["java.lang.String[]"] }] +}, { "name":"sun.management.VMManagementImpl", "fields":[{"name":"compTimeMonitoringSupport"}, {"name":"currentThreadCpuTimeSupport"}, {"name":"objectMonitorUsageSupport"}, {"name":"otherThreadCpuTimeSupport"}, {"name":"remoteDiagnosticCommandsSupport"}, {"name":"synchronizerUsageSupport"}, {"name":"threadAllocatedMemorySupport"}, {"name":"threadContentionMonitoringSupport"}] } -] \ No newline at end of file +] diff --git a/docker/native/native-image-configs/predefined-classes-config.json b/docker/native/native-image-configs/predefined-classes-config.json index 847895071fb..0e79b2c5d83 100644 --- a/docker/native/native-image-configs/predefined-classes-config.json +++ b/docker/native/native-image-configs/predefined-classes-config.json @@ -5,3 +5,4 @@ ] } ] + diff --git a/docker/native/native-image-configs/proxy-config.json b/docker/native/native-image-configs/proxy-config.json index 2a8e3c8a136..4a9716c16f3 100644 --- a/docker/native/native-image-configs/proxy-config.json +++ b/docker/native/native-image-configs/proxy-config.json @@ -2,4 +2,4 @@ { "interfaces":["sun.misc.SignalHandler"] } -] \ No newline at end of file +] diff --git a/docker/native/native-image-configs/reflect-config.json b/docker/native/native-image-configs/reflect-config.json index bf23f48c774..f4263a08898 100644 --- a/docker/native/native-image-configs/reflect-config.json +++ b/docker/native/native-image-configs/reflect-config.json @@ -17,6 +17,30 @@ { "name":"[J" }, +{ + "name":"[Lcom.fasterxml.jackson.databind.deser.BeanDeserializerModifier;" +}, +{ + "name":"[Lcom.fasterxml.jackson.databind.deser.Deserializers;" +}, +{ + "name":"[Lcom.fasterxml.jackson.databind.deser.KeyDeserializers;" +}, +{ + "name":"[Lcom.fasterxml.jackson.databind.deser.ValueInstantiators;" +}, +{ + "name":"[Lcom.fasterxml.jackson.databind.ser.BeanSerializerModifier;" +}, +{ + "name":"[Lcom.fasterxml.jackson.databind.ser.Serializers;" +}, +{ + "name":"[Lcom.fasterxml.jackson.databind.type.TypeModifier;" +}, +{ + "name":"[Lcom.fasterxml.jackson.module.scala.introspect.PropertyDescriptor;" +}, { "name":"[Ljava.io.File;" }, @@ -26,6 +50,9 @@ { "name":"[Ljava.lang.Integer;" }, +{ + "name":"[Ljava.lang.Object;" +}, { "name":"[Ljava.lang.Runnable;" }, @@ -44,6 +71,12 @@ { "name":"[Ljavax.management.openmbean.CompositeData;" }, +{ + "name":"[Lkafka.docker.Logger;" +}, +{ + "name":"[Lkafka.network.DataPlaneAcceptor;" +}, { "name":"[Lkafka.server.DelayedOperationPurgatory$WatcherList;" }, @@ -53,12 +86,30 @@ { "name":"[Lorg.apache.kafka.common.security.auth.KafkaPrincipal;" }, +{ + "name":"[Lorg.apache.logging.log4j.core.Appender;" +}, +{ + "name":"[Lorg.apache.logging.log4j.core.config.AppenderRef;" +}, +{ + "name":"[Lorg.apache.logging.log4j.core.config.LoggerConfig;" +}, +{ + "name":"[Lorg.apache.logging.log4j.core.config.Property;" +}, { "name":"[Lscala.Option;" }, { "name":"[Lscala.Tuple2;" }, +{ + "name":"[Lscala.Tuple3;" +}, +{ + "name":"[Lscala.Tuple4;" +}, { "name":"[Lsun.security.pkcs.SignerInfo;" }, @@ -68,9 +119,21 @@ { "name":"[Z" }, +{ + "name":"[[I" +}, { "name":"[[Ljava.lang.String;" }, +{ + "name":"com.fasterxml.jackson.core.JsonParser" +}, +{ + "name":"com.fasterxml.jackson.databind.JsonNode" +}, +{ + "name":"com.fasterxml.jackson.databind.ObjectMapper" +}, { "name":"com.fasterxml.jackson.databind.ext.Java7HandlersImpl", "methods":[{"name":"","parameterTypes":[] }] @@ -79,6 +142,21 @@ "name":"com.fasterxml.jackson.databind.ext.Java7SupportImpl", "methods":[{"name":"","parameterTypes":[] }] }, +{ + "name":"com.fasterxml.jackson.dataformat.yaml.YAMLFactory" +}, +{ + "name":"com.fasterxml.jackson.module.blackbird.deser.BBDeserializerModifier", + "methods":[{"name":"booleanTrampoline","parameterTypes":["com.fasterxml.jackson.module.blackbird.deser.BBDeserializerModifier$ObjBooleanBiFunction","java.lang.Object","boolean"] }, {"name":"intTrampoline","parameterTypes":["com.fasterxml.jackson.module.blackbird.deser.BBDeserializerModifier$ObjIntBiFunction","java.lang.Object","int"] }, {"name":"longTrampoline","parameterTypes":["com.fasterxml.jackson.module.blackbird.deser.BBDeserializerModifier$ObjLongBiFunction","java.lang.Object","long"] }, {"name":"trampoline","parameterTypes":["java.util.function.BiFunction","java.lang.Object","java.lang.Object"] }] +}, +{ + "name":"com.fasterxml.jackson.module.jakarta.xmlbind.deser.DataHandlerDeserializer", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"com.fasterxml.jackson.module.jakarta.xmlbind.ser.DataHandlerSerializer", + "methods":[{"name":"","parameterTypes":[] }] +}, { "name":"com.sun.crypto.provider.AESCipher$General", "methods":[{"name":"","parameterTypes":[] }] @@ -336,6 +414,9 @@ "name":"io.netty.util.internal.shaded.org.jctools.queues.MpscArrayQueueProducerLimitField", "fields":[{"name":"producerLimit"}] }, +{ + "name":"jakarta.servlet.Servlet" +}, { "name":"java.beans.PropertyVetoException" }, @@ -387,15 +468,23 @@ }, { "name":"java.lang.Iterable", - "queryAllDeclaredMethods":true + "queryAllDeclaredMethods":true, + "fields":[{"name":"MODULE$"}] }, { "name":"java.lang.Long", "fields":[{"name":"TYPE"}], "methods":[{"name":"valueOf","parameterTypes":["java.lang.String"] }] }, +{ + "name":"java.lang.Number", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true, + "fields":[{"name":"MODULE$"}] +}, { "name":"java.lang.Object", + "allDeclaredFields":true, "queryAllPublicMethods":true }, { @@ -418,7 +507,7 @@ }, { "name":"java.lang.String", - "fields":[{"name":"TYPE"}], + "fields":[{"name":"MODULE$"}, {"name":"TYPE"}], "methods":[{"name":"","parameterTypes":["java.lang.String"] }, {"name":"valueOf","parameterTypes":["java.lang.String"] }] }, { @@ -429,6 +518,14 @@ "name":"java.lang.Void", "fields":[{"name":"TYPE"}] }, +{ + "name":"java.lang.invoke.MethodHandles", + "methods":[{"name":"privateLookupIn","parameterTypes":["java.lang.Class","java.lang.invoke.MethodHandles$Lookup"] }] +}, +{ + "name":"java.lang.invoke.MethodHandles$Lookup", + "methods":[{"name":"defineClass","parameterTypes":["byte[]"] }, {"name":"hasFullPrivilegeAccess","parameterTypes":[] }] +}, { "name":"java.lang.invoke.VarHandle", "methods":[{"name":"releaseFence","parameterTypes":[] }] @@ -558,31 +655,52 @@ { "name":"java.security.interfaces.RSAPublicKey" }, +{ + "name":"java.sql.Date" +}, +{ + "name":"java.sql.Time" +}, +{ + "name":"java.sql.Timestamp" +}, { "name":"java.util.AbstractCollection", "allDeclaredFields":true, - "queryAllDeclaredMethods":true + "queryAllDeclaredMethods":true, + "fields":[{"name":"MODULE$"}] }, { "name":"java.util.AbstractList", "allDeclaredFields":true, - "queryAllDeclaredMethods":true + "queryAllDeclaredMethods":true, + "fields":[{"name":"MODULE$"}] }, { "name":"java.util.AbstractMap", "allDeclaredFields":true, "queryAllDeclaredMethods":true }, +{ + "name":"java.util.ArrayList", + "fields":[{"name":"MODULE$"}] +}, { "name":"java.util.Collection", - "queryAllDeclaredMethods":true + "queryAllDeclaredMethods":true, + "fields":[{"name":"MODULE$"}] }, { "name":"java.util.Date" }, +{ + "name":"java.util.LinkedHashMap", + "fields":[{"name":"MODULE$"}] +}, { "name":"java.util.List", - "queryAllDeclaredMethods":true + "queryAllDeclaredMethods":true, + "fields":[{"name":"MODULE$"}] }, { "name":"java.util.Map", @@ -682,6 +800,9 @@ "fields":[{"name":"thisX500Name"}], "methods":[{"name":"","parameterTypes":["sun.security.x509.X500Name"] }] }, +{ + "name":"javax.servlet.Servlet" +}, { "name":"jdk.internal.misc.Unsafe", "methods":[{"name":"getUnsafe","parameterTypes":[] }] @@ -712,8 +833,60 @@ "queryAllPublicMethods":true }, { - "name":"org.apache.kafka.tools.LineMessageReader", - "methods":[{"name":"","parameterTypes":[] }] + "name":"kafka.docker.Appenders", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true, + "queryAllDeclaredConstructors":true, + "fields":[{"name":"MODULE$"}], + "methods":[{"name":"","parameterTypes":[] }, {"name":"getProperties","parameterTypes":[] }, {"name":"setProperties","parameterTypes":["java.lang.String","java.lang.Object"] }] +}, +{ + "name":"kafka.docker.Configuration", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true, + "queryAllDeclaredConstructors":true, + "fields":[{"name":"MODULE$"}], + "methods":[{"name":"","parameterTypes":[] }, {"name":"getAdditionalProperties","parameterTypes":[] }, {"name":"getAppenders","parameterTypes":[] }, {"name":"getLoggers","parameterTypes":[] }, {"name":"getProperties","parameterTypes":[] }, {"name":"setAppenders","parameterTypes":["kafka.docker.Appenders"] }, {"name":"setLoggers","parameterTypes":["kafka.docker.Loggers"] }, {"name":"setProperties","parameterTypes":["kafka.docker.Properties"] }] +}, +{ + "name":"kafka.docker.Log4jConfiguration", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true, + "queryAllDeclaredConstructors":true, + "fields":[{"name":"MODULE$"}], + "methods":[{"name":"","parameterTypes":[] }, {"name":"getConfiguration","parameterTypes":[] }, {"name":"setConfiguration","parameterTypes":["kafka.docker.Configuration"] }] +}, +{ + "name":"kafka.docker.Logger", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true, + "queryAllDeclaredConstructors":true, + "fields":[{"name":"MODULE$"}], + "methods":[{"name":"","parameterTypes":[] }, {"name":"getLevel","parameterTypes":[] }, {"name":"getName","parameterTypes":[] }, {"name":"getOtherProperties","parameterTypes":[] }, {"name":"setLevel","parameterTypes":["java.lang.String"] }, {"name":"setName","parameterTypes":["java.lang.String"] }, {"name":"setOtherProperties","parameterTypes":["java.lang.String","java.lang.Object"] }] +}, +{ + "name":"kafka.docker.Loggers", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true, + "queryAllDeclaredConstructors":true, + "fields":[{"name":"MODULE$"}], + "methods":[{"name":"","parameterTypes":[] }, {"name":"getLogger","parameterTypes":[] }, {"name":"getRoot","parameterTypes":[] }, {"name":"setLogger","parameterTypes":["java.util.List"] }, {"name":"setRoot","parameterTypes":["kafka.docker.Root"] }] +}, +{ + "name":"kafka.docker.Properties", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true, + "queryAllDeclaredConstructors":true, + "fields":[{"name":"MODULE$"}], + "methods":[{"name":"","parameterTypes":[] }, {"name":"getProperties","parameterTypes":[] }, {"name":"setProperties","parameterTypes":["java.lang.String","java.lang.Object"] }] +}, +{ + "name":"kafka.docker.Root", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true, + "queryAllDeclaredConstructors":true, + "fields":[{"name":"MODULE$"}], + "methods":[{"name":"","parameterTypes":[] }, {"name":"getLevel","parameterTypes":[] }, {"name":"getOtherProperties","parameterTypes":[] }, {"name":"setLevel","parameterTypes":["java.lang.String"] }, {"name":"setOtherProperties","parameterTypes":["java.lang.String","java.lang.Object"] }] }, { "name":"kafka.tools.DefaultMessageFormatter", @@ -728,6 +901,14 @@ "name":"kafka.utils.Log4jControllerMBean", "queryAllPublicMethods":true }, +{ + "name":"kafka.utils.LoggingController", + "queryAllPublicConstructors":true +}, +{ + "name":"kafka.utils.LoggingControllerMBean", + "queryAllPublicMethods":true +}, { "name":"net.jpountz.lz4.LZ4HCJNICompressor", "fields":[{"name":"INSTANCE"}], @@ -794,6 +975,18 @@ "name":"net.jpountz.xxhash.XXHash64JavaSafe", "fields":[{"name":"INSTANCE"}] }, +{ + "name":"org.HdrHistogram.AbstractHistogram", + "fields":[{"name":"maxValue"}, {"name":"minNonZeroValue"}] +}, +{ + "name":"org.HdrHistogram.AtomicHistogram", + "fields":[{"name":"totalCount"}] +}, +{ + "name":"org.HdrHistogram.WriterReaderPhaser", + "fields":[{"name":"evenEndEpoch"}, {"name":"oddEndEpoch"}, {"name":"startEpoch"}] +}, { "name":"org.apache.kafka.clients.consumer.CooperativeStickyAssignor", "methods":[{"name":"","parameterTypes":[] }] @@ -881,6 +1074,10 @@ "queryAllDeclaredConstructors":true, "methods":[{"name":"","parameterTypes":[] }] }, +{ + "name":"org.apache.kafka.tools.LineMessageReader", + "methods":[{"name":"","parameterTypes":[] }] +}, { "name":"org.apache.log4j.Appender", "queryAllPublicMethods":true @@ -963,10 +1160,908 @@ { "name":"org.apache.log4j.WriterAppenderCustomizer" }, +{ + "name":"org.apache.log4j.builders.appender.AsyncAppenderBuilder" +}, +{ + "name":"org.apache.log4j.builders.appender.ConsoleAppenderBuilder" +}, +{ + "name":"org.apache.log4j.builders.appender.DailyRollingFileAppenderBuilder" +}, +{ + "name":"org.apache.log4j.builders.appender.EnhancedRollingFileAppenderBuilder" +}, +{ + "name":"org.apache.log4j.builders.appender.FileAppenderBuilder" +}, +{ + "name":"org.apache.log4j.builders.appender.NullAppenderBuilder" +}, +{ + "name":"org.apache.log4j.builders.appender.RewriteAppenderBuilder" +}, +{ + "name":"org.apache.log4j.builders.appender.RollingFileAppenderBuilder" +}, +{ + "name":"org.apache.log4j.builders.appender.SocketAppenderBuilder" +}, +{ + "name":"org.apache.log4j.builders.appender.SyslogAppenderBuilder" +}, +{ + "name":"org.apache.log4j.builders.filter.DenyAllFilterBuilder" +}, +{ + "name":"org.apache.log4j.builders.filter.LevelMatchFilterBuilder" +}, +{ + "name":"org.apache.log4j.builders.filter.LevelRangeFilterBuilder" +}, +{ + "name":"org.apache.log4j.builders.filter.StringMatchFilterBuilder" +}, +{ + "name":"org.apache.log4j.builders.layout.HtmlLayoutBuilder" +}, +{ + "name":"org.apache.log4j.builders.layout.PatternLayoutBuilder" +}, +{ + "name":"org.apache.log4j.builders.layout.SimpleLayoutBuilder" +}, +{ + "name":"org.apache.log4j.builders.layout.TTCCLayoutBuilder" +}, +{ + "name":"org.apache.log4j.builders.layout.XmlLayoutBuilder" +}, +{ + "name":"org.apache.log4j.builders.rolling.CompositeTriggeringPolicyBuilder" +}, +{ + "name":"org.apache.log4j.builders.rolling.SizeBasedTriggeringPolicyBuilder" +}, +{ + "name":"org.apache.log4j.builders.rolling.TimeBasedRollingPolicyBuilder" +}, +{ + "name":"org.apache.log4j.config.PropertiesConfigurationFactory", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.log4j.layout.Log4j1SyslogLayout" +}, +{ + "name":"org.apache.log4j.layout.Log4j1XmlLayout" +}, +{ + "name":"org.apache.log4j.pattern.Log4j1LevelPatternConverter" +}, +{ + "name":"org.apache.log4j.pattern.Log4j1MdcPatternConverter" +}, +{ + "name":"org.apache.log4j.pattern.Log4j1NdcPatternConverter" +}, { "name":"org.apache.log4j.spi.OptionHandler", "queryAllPublicMethods":true }, +{ + "name":"org.apache.log4j.xml.XmlConfigurationFactory", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.appender.AbstractAppender$Builder", + "allDeclaredFields":true +}, +{ + "name":"org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender$Builder", + "allDeclaredFields":true +}, +{ + "name":"org.apache.logging.log4j.core.appender.AppenderSet" +}, +{ + "name":"org.apache.logging.log4j.core.appender.AsyncAppender" +}, +{ + "name":"org.apache.logging.log4j.core.appender.ConsoleAppender", + "queryAllDeclaredMethods":true, + "methods":[{"name":"newBuilder","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.appender.ConsoleAppender$Builder", + "allDeclaredFields":true +}, +{ + "name":"org.apache.logging.log4j.core.appender.CountingNoOpAppender" +}, +{ + "name":"org.apache.logging.log4j.core.appender.FailoverAppender" +}, +{ + "name":"org.apache.logging.log4j.core.appender.FailoversPlugin" +}, +{ + "name":"org.apache.logging.log4j.core.appender.FileAppender" +}, +{ + "name":"org.apache.logging.log4j.core.appender.HttpAppender" +}, +{ + "name":"org.apache.logging.log4j.core.appender.MemoryMappedFileAppender" +}, +{ + "name":"org.apache.logging.log4j.core.appender.NullAppender" +}, +{ + "name":"org.apache.logging.log4j.core.appender.OutputStreamAppender" +}, +{ + "name":"org.apache.logging.log4j.core.appender.RandomAccessFileAppender" +}, +{ + "name":"org.apache.logging.log4j.core.appender.RollingFileAppender", + "queryAllDeclaredMethods":true, + "methods":[{"name":"newBuilder","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.appender.RollingFileAppender$Builder", + "allDeclaredFields":true +}, +{ + "name":"org.apache.logging.log4j.core.appender.RollingRandomAccessFileAppender" +}, +{ + "name":"org.apache.logging.log4j.core.appender.ScriptAppenderSelector" +}, +{ + "name":"org.apache.logging.log4j.core.appender.SmtpAppender" +}, +{ + "name":"org.apache.logging.log4j.core.appender.SocketAppender" +}, +{ + "name":"org.apache.logging.log4j.core.appender.SyslogAppender" +}, +{ + "name":"org.apache.logging.log4j.core.appender.WriterAppender" +}, +{ + "name":"org.apache.logging.log4j.core.appender.db.ColumnMapping" +}, +{ + "name":"org.apache.logging.log4j.core.appender.db.jdbc.ColumnConfig" +}, +{ + "name":"org.apache.logging.log4j.core.appender.db.jdbc.DataSourceConnectionSource" +}, +{ + "name":"org.apache.logging.log4j.core.appender.db.jdbc.DriverManagerConnectionSource" +}, +{ + "name":"org.apache.logging.log4j.core.appender.db.jdbc.FactoryMethodConnectionSource" +}, +{ + "name":"org.apache.logging.log4j.core.appender.db.jdbc.JdbcAppender" +}, +{ + "name":"org.apache.logging.log4j.core.appender.mom.JmsAppender" +}, +{ + "name":"org.apache.logging.log4j.core.appender.mom.jeromq.JeroMqAppender" +}, +{ + "name":"org.apache.logging.log4j.core.appender.mom.kafka.KafkaAppender" +}, +{ + "name":"org.apache.logging.log4j.core.appender.nosql.NoSqlAppender" +}, +{ + "name":"org.apache.logging.log4j.core.appender.rewrite.LoggerNameLevelRewritePolicy" +}, +{ + "name":"org.apache.logging.log4j.core.appender.rewrite.MapRewritePolicy" +}, +{ + "name":"org.apache.logging.log4j.core.appender.rewrite.PropertiesRewritePolicy" +}, +{ + "name":"org.apache.logging.log4j.core.appender.rewrite.RewriteAppender" +}, +{ + "name":"org.apache.logging.log4j.core.appender.rolling.CompositeTriggeringPolicy" +}, +{ + "name":"org.apache.logging.log4j.core.appender.rolling.CronTriggeringPolicy" +}, +{ + "name":"org.apache.logging.log4j.core.appender.rolling.DefaultRolloverStrategy" +}, +{ + "name":"org.apache.logging.log4j.core.appender.rolling.DirectWriteRolloverStrategy" +}, +{ + "name":"org.apache.logging.log4j.core.appender.rolling.NoOpTriggeringPolicy" +}, +{ + "name":"org.apache.logging.log4j.core.appender.rolling.OnStartupTriggeringPolicy" +}, +{ + "name":"org.apache.logging.log4j.core.appender.rolling.RollingFileManager", + "fields":[{"name":"patternProcessor"}, {"name":"rolloverStrategy"}, {"name":"triggeringPolicy"}] +}, +{ + "name":"org.apache.logging.log4j.core.appender.rolling.SizeBasedTriggeringPolicy" +}, +{ + "name":"org.apache.logging.log4j.core.appender.rolling.TimeBasedTriggeringPolicy", + "queryAllDeclaredMethods":true, + "methods":[{"name":"newBuilder","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.appender.rolling.TimeBasedTriggeringPolicy$Builder", + "allDeclaredFields":true +}, +{ + "name":"org.apache.logging.log4j.core.appender.rolling.action.DeleteAction" +}, +{ + "name":"org.apache.logging.log4j.core.appender.rolling.action.IfAccumulatedFileCount" +}, +{ + "name":"org.apache.logging.log4j.core.appender.rolling.action.IfAccumulatedFileSize" +}, +{ + "name":"org.apache.logging.log4j.core.appender.rolling.action.IfAll" +}, +{ + "name":"org.apache.logging.log4j.core.appender.rolling.action.IfAny" +}, +{ + "name":"org.apache.logging.log4j.core.appender.rolling.action.IfFileName" +}, +{ + "name":"org.apache.logging.log4j.core.appender.rolling.action.IfLastModified" +}, +{ + "name":"org.apache.logging.log4j.core.appender.rolling.action.IfNot" +}, +{ + "name":"org.apache.logging.log4j.core.appender.rolling.action.PathSortByModificationTime" +}, +{ + "name":"org.apache.logging.log4j.core.appender.rolling.action.PosixViewAttributeAction" +}, +{ + "name":"org.apache.logging.log4j.core.appender.rolling.action.ScriptCondition" +}, +{ + "name":"org.apache.logging.log4j.core.appender.routing.IdlePurgePolicy" +}, +{ + "name":"org.apache.logging.log4j.core.appender.routing.Route" +}, +{ + "name":"org.apache.logging.log4j.core.appender.routing.Routes" +}, +{ + "name":"org.apache.logging.log4j.core.appender.routing.RoutingAppender" +}, +{ + "name":"org.apache.logging.log4j.core.async.ArrayBlockingQueueFactory" +}, +{ + "name":"org.apache.logging.log4j.core.async.AsyncLoggerConfig" +}, +{ + "name":"org.apache.logging.log4j.core.async.AsyncLoggerConfig$RootLogger" +}, +{ + "name":"org.apache.logging.log4j.core.async.AsyncWaitStrategyFactoryConfig" +}, +{ + "name":"org.apache.logging.log4j.core.async.DisruptorBlockingQueueFactory" +}, +{ + "name":"org.apache.logging.log4j.core.async.JCToolsBlockingQueueFactory" +}, +{ + "name":"org.apache.logging.log4j.core.async.LinkedTransferQueueFactory" +}, +{ + "name":"org.apache.logging.log4j.core.config.AppenderControlArraySet", + "fields":[{"name":"appenderArray"}] +}, +{ + "name":"org.apache.logging.log4j.core.config.AppenderRef", + "queryAllDeclaredMethods":true, + "methods":[{"name":"createAppenderRef","parameterTypes":["java.lang.String","org.apache.logging.log4j.Level","org.apache.logging.log4j.core.Filter"] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.AppendersPlugin", + "queryAllDeclaredMethods":true, + "methods":[{"name":"createAppenders","parameterTypes":["org.apache.logging.log4j.core.Appender[]"] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.CustomLevelConfig" +}, +{ + "name":"org.apache.logging.log4j.core.config.CustomLevels" +}, +{ + "name":"org.apache.logging.log4j.core.config.DefaultAdvertiser" +}, +{ + "name":"org.apache.logging.log4j.core.config.HttpWatcher" +}, +{ + "name":"org.apache.logging.log4j.core.config.LoggerConfig", + "queryAllDeclaredMethods":true, + "methods":[{"name":"newBuilder","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.LoggerConfig$Builder", + "allDeclaredFields":true +}, +{ + "name":"org.apache.logging.log4j.core.config.LoggerConfig$RootLogger", + "queryAllDeclaredMethods":true, + "methods":[{"name":"newRootBuilder","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.LoggerConfig$RootLogger$Builder", + "allDeclaredFields":true +}, +{ + "name":"org.apache.logging.log4j.core.config.LoggersPlugin", + "queryAllDeclaredMethods":true, + "methods":[{"name":"createLoggers","parameterTypes":["org.apache.logging.log4j.core.config.LoggerConfig[]"] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.PropertiesPlugin", + "queryAllDeclaredMethods":true, + "methods":[{"name":"configureSubstitutor","parameterTypes":["org.apache.logging.log4j.core.config.Property[]","org.apache.logging.log4j.core.config.Configuration"] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.Property", + "queryAllDeclaredMethods":true, + "methods":[{"name":"createProperty","parameterTypes":["java.lang.String","java.lang.String","org.apache.logging.log4j.core.config.Configuration"] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.ScriptsPlugin" +}, +{ + "name":"org.apache.logging.log4j.core.config.arbiters.ClassArbiter" +}, +{ + "name":"org.apache.logging.log4j.core.config.arbiters.DefaultArbiter" +}, +{ + "name":"org.apache.logging.log4j.core.config.arbiters.EnvironmentArbiter" +}, +{ + "name":"org.apache.logging.log4j.core.config.arbiters.ScriptArbiter" +}, +{ + "name":"org.apache.logging.log4j.core.config.arbiters.SelectArbiter" +}, +{ + "name":"org.apache.logging.log4j.core.config.arbiters.SystemPropertyArbiter" +}, +{ + "name":"org.apache.logging.log4j.core.config.json.JsonConfigurationFactory", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$BigDecimalConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$BigIntegerConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$BooleanConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$ByteArrayConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$ByteConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$CharArrayConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$CharacterConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$CharsetConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$ClassConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$CronExpressionConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$DoubleConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$DurationConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$FileConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$FloatConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$InetAddressConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$IntegerConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$LevelConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$LongConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$PathConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$PatternConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$SecurityProviderConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$ShortConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$StringConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$UriConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$UrlConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$UuidConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.validation.validators.RequiredValidator", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.visitors.PluginAttributeVisitor", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.visitors.PluginBuilderAttributeVisitor", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.visitors.PluginConfigurationVisitor", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.visitors.PluginElementVisitor", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.plugins.visitors.PluginValueVisitor", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.properties.PropertiesConfigurationFactory", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.xml.XmlConfigurationFactory", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.config.yaml.YamlConfigurationFactory", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.filter.AbstractFilterable$Builder", + "allDeclaredFields":true +}, +{ + "name":"org.apache.logging.log4j.core.filter.BurstFilter" +}, +{ + "name":"org.apache.logging.log4j.core.filter.CompositeFilter" +}, +{ + "name":"org.apache.logging.log4j.core.filter.DenyAllFilter" +}, +{ + "name":"org.apache.logging.log4j.core.filter.DynamicThresholdFilter" +}, +{ + "name":"org.apache.logging.log4j.core.filter.LevelMatchFilter" +}, +{ + "name":"org.apache.logging.log4j.core.filter.LevelRangeFilter" +}, +{ + "name":"org.apache.logging.log4j.core.filter.MapFilter" +}, +{ + "name":"org.apache.logging.log4j.core.filter.MarkerFilter" +}, +{ + "name":"org.apache.logging.log4j.core.filter.MutableThreadContextMapFilter" +}, +{ + "name":"org.apache.logging.log4j.core.filter.NoMarkerFilter" +}, +{ + "name":"org.apache.logging.log4j.core.filter.RegexFilter" +}, +{ + "name":"org.apache.logging.log4j.core.filter.ScriptFilter" +}, +{ + "name":"org.apache.logging.log4j.core.filter.StringMatchFilter" +}, +{ + "name":"org.apache.logging.log4j.core.filter.StructuredDataFilter" +}, +{ + "name":"org.apache.logging.log4j.core.filter.ThreadContextMapFilter" +}, +{ + "name":"org.apache.logging.log4j.core.filter.ThresholdFilter" +}, +{ + "name":"org.apache.logging.log4j.core.filter.TimeFilter" +}, +{ + "name":"org.apache.logging.log4j.core.layout.CsvLogEventLayout" +}, +{ + "name":"org.apache.logging.log4j.core.layout.CsvParameterLayout" +}, +{ + "name":"org.apache.logging.log4j.core.layout.GelfLayout" +}, +{ + "name":"org.apache.logging.log4j.core.layout.HtmlLayout" +}, +{ + "name":"org.apache.logging.log4j.core.layout.JsonLayout" +}, +{ + "name":"org.apache.logging.log4j.core.layout.LevelPatternSelector" +}, +{ + "name":"org.apache.logging.log4j.core.layout.LoggerFields" +}, +{ + "name":"org.apache.logging.log4j.core.layout.MarkerPatternSelector" +}, +{ + "name":"org.apache.logging.log4j.core.layout.MessageLayout" +}, +{ + "name":"org.apache.logging.log4j.core.layout.PatternLayout", + "queryAllDeclaredMethods":true, + "methods":[{"name":"newBuilder","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.layout.PatternLayout$Builder", + "allDeclaredFields":true +}, +{ + "name":"org.apache.logging.log4j.core.layout.PatternMatch" +}, +{ + "name":"org.apache.logging.log4j.core.layout.Rfc5424Layout" +}, +{ + "name":"org.apache.logging.log4j.core.layout.ScriptPatternSelector" +}, +{ + "name":"org.apache.logging.log4j.core.layout.SerializedLayout" +}, +{ + "name":"org.apache.logging.log4j.core.layout.SyslogLayout" +}, +{ + "name":"org.apache.logging.log4j.core.layout.XmlLayout" +}, +{ + "name":"org.apache.logging.log4j.core.layout.YamlLayout" +}, +{ + "name":"org.apache.logging.log4j.core.lookup.ContextMapLookup", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.lookup.DateLookup", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.lookup.EnvironmentLookup", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.lookup.EventLookup", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.lookup.JavaLookup", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.lookup.JmxRuntimeInputArgumentsLookup", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.lookup.JndiLookup" +}, +{ + "name":"org.apache.logging.log4j.core.lookup.Log4jLookup", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.lookup.LowerLookup", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.lookup.MainMapLookup", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.lookup.MapLookup", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.lookup.MarkerLookup", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.lookup.ResourceBundleLookup", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.lookup.StructuredDataLookup", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.lookup.SystemPropertiesLookup", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.lookup.UpperLookup", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.logging.log4j.core.net.MulticastDnsAdvertiser" +}, +{ + "name":"org.apache.logging.log4j.core.net.SocketAddress" +}, +{ + "name":"org.apache.logging.log4j.core.net.SocketOptions" +}, +{ + "name":"org.apache.logging.log4j.core.net.SocketPerformancePreferences" +}, +{ + "name":"org.apache.logging.log4j.core.net.ssl.KeyStoreConfiguration" +}, +{ + "name":"org.apache.logging.log4j.core.net.ssl.SslConfiguration" +}, +{ + "name":"org.apache.logging.log4j.core.net.ssl.TrustStoreConfiguration" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.AbstractStyleNameConverter$Black" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.AbstractStyleNameConverter$Blue" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.AbstractStyleNameConverter$Cyan" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.AbstractStyleNameConverter$Green" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.AbstractStyleNameConverter$Magenta" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.AbstractStyleNameConverter$Red" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.AbstractStyleNameConverter$White" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.AbstractStyleNameConverter$Yellow" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.ClassNamePatternConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.DatePatternConverter", + "queryAllDeclaredMethods":true, + "methods":[{"name":"newInstance","parameterTypes":["java.lang.String[]"] }] +}, +{ + "name":"org.apache.logging.log4j.core.pattern.EncodingPatternConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.EndOfBatchPatternConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.EqualsIgnoreCaseReplacementConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.EqualsReplacementConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.ExtendedThrowablePatternConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.FileDatePatternConverter", + "queryAllDeclaredMethods":true, + "methods":[{"name":"newInstance","parameterTypes":["java.lang.String[]"] }] +}, +{ + "name":"org.apache.logging.log4j.core.pattern.FileLocationPatternConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.FullLocationPatternConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.HighlightConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.IntegerPatternConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.LevelPatternConverter", + "queryAllDeclaredMethods":true, + "methods":[{"name":"newInstance","parameterTypes":["java.lang.String[]"] }] +}, +{ + "name":"org.apache.logging.log4j.core.pattern.LineLocationPatternConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.LineSeparatorPatternConverter", + "queryAllDeclaredMethods":true, + "methods":[{"name":"newInstance","parameterTypes":["java.lang.String[]"] }] +}, +{ + "name":"org.apache.logging.log4j.core.pattern.LoggerFqcnPatternConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.LoggerPatternConverter", + "queryAllDeclaredMethods":true, + "methods":[{"name":"newInstance","parameterTypes":["java.lang.String[]"] }] +}, +{ + "name":"org.apache.logging.log4j.core.pattern.MapPatternConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.MarkerPatternConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.MarkerSimpleNamePatternConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.MaxLengthConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.MdcPatternConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.MessagePatternConverter", + "queryAllDeclaredMethods":true, + "methods":[{"name":"newInstance","parameterTypes":["org.apache.logging.log4j.core.config.Configuration","java.lang.String[]"] }] +}, +{ + "name":"org.apache.logging.log4j.core.pattern.MethodLocationPatternConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.NanoTimePatternConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.NdcPatternConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.ProcessIdPatternConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.RegexReplacement" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.RegexReplacementConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.RelativeTimePatternConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.RepeatPatternConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.RootThrowablePatternConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.SequenceNumberPatternConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.StyleConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.ThreadIdPatternConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.ThreadNamePatternConverter", + "queryAllDeclaredMethods":true, + "methods":[{"name":"newInstance","parameterTypes":["java.lang.String[]"] }] +}, +{ + "name":"org.apache.logging.log4j.core.pattern.ThreadPriorityPatternConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.ThrowablePatternConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.UuidPatternConverter" +}, +{ + "name":"org.apache.logging.log4j.core.pattern.VariablesNotEmptyReplacementConverter" +}, +{ + "name":"org.apache.logging.log4j.core.script.Script" +}, +{ + "name":"org.apache.logging.log4j.core.script.ScriptFile" +}, +{ + "name":"org.apache.logging.log4j.core.script.ScriptRef" +}, +{ + "name":"org.apache.logging.log4j.core.util.KeyValuePair" +}, { "name":"org.apache.zookeeper.ClientCnxnSocketNIO", "methods":[{"name":"","parameterTypes":["org.apache.zookeeper.client.ZKClientConfig"] }] @@ -985,6 +2080,108 @@ { "name":"org.osgi.framework.BundleEvent" }, +{ + "name":"org.osgi.framework.FrameworkUtil" +}, +{ + "name":"scala.Equals", + "queryAllDeclaredMethods":true +}, +{ + "name":"scala.Function1", + "queryAllDeclaredMethods":true +}, +{ + "name":"scala.PartialFunction", + "queryAllDeclaredMethods":true +}, +{ + "name":"scala.Product", + "queryAllDeclaredMethods":true +}, +{ + "name":"scala.collection.AbstractIterable", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true +}, +{ + "name":"scala.collection.AbstractMap", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true +}, +{ + "name":"scala.collection.AbstractSeq", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true +}, +{ + "name":"scala.collection.Iterable", + "queryAllDeclaredMethods":true +}, +{ + "name":"scala.collection.IterableFactoryDefaults", + "queryAllDeclaredMethods":true +}, +{ + "name":"scala.collection.IterableOnce", + "queryAllDeclaredMethods":true +}, +{ + "name":"scala.collection.IterableOnceOps", + "queryAllDeclaredMethods":true +}, +{ + "name":"scala.collection.IterableOps", + "queryAllDeclaredMethods":true +}, +{ + "name":"scala.collection.LinearSeq", + "queryAllDeclaredMethods":true +}, +{ + "name":"scala.collection.LinearSeqOps", + "queryAllDeclaredMethods":true +}, +{ + "name":"scala.collection.Map", + "queryAllDeclaredMethods":true +}, +{ + "name":"scala.collection.MapFactoryDefaults", + "queryAllDeclaredMethods":true +}, +{ + "name":"scala.collection.MapOps", + "queryAllDeclaredMethods":true +}, +{ + "name":"scala.collection.Seq", + "queryAllDeclaredMethods":true +}, +{ + "name":"scala.collection.SeqOps", + "queryAllDeclaredMethods":true +}, +{ + "name":"scala.collection.StrictOptimizedIterableOps", + "queryAllDeclaredMethods":true +}, +{ + "name":"scala.collection.StrictOptimizedLinearSeqOps", + "queryAllDeclaredMethods":true +}, +{ + "name":"scala.collection.StrictOptimizedMapOps", + "queryAllDeclaredMethods":true +}, +{ + "name":"scala.collection.StrictOptimizedSeqOps", + "queryAllDeclaredMethods":true +}, +{ + "name":"scala.collection.concurrent.INodeBase", + "fields":[{"name":"mainnode"}] +}, { "name":"scala.collection.convert.JavaCollectionWrappers$IterableWrapper", "allDeclaredFields":true, @@ -1017,7 +2214,92 @@ "name":"scala.collection.convert.JavaCollectionWrappers$SeqWrapper", "allDeclaredFields":true, "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true + "queryAllDeclaredConstructors":true, + "queryAllPublicConstructors":true, + "fields":[{"name":"MODULE$"}] +}, +{ + "name":"scala.collection.convert.JavaCollectionWrappers$SeqWrapper$" +}, +{ + "name":"scala.collection.generic.DefaultSerializable", + "queryAllDeclaredMethods":true +}, +{ + "name":"scala.collection.immutable.$colon$colon", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true +}, +{ + "name":"scala.collection.immutable.AbstractMap", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true +}, +{ + "name":"scala.collection.immutable.AbstractSeq", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true +}, +{ + "name":"scala.collection.immutable.HashMap", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true +}, +{ + "name":"scala.collection.immutable.Iterable", + "queryAllDeclaredMethods":true +}, +{ + "name":"scala.collection.immutable.LinearSeq", + "queryAllDeclaredMethods":true +}, +{ + "name":"scala.collection.immutable.LinearSeqOps", + "queryAllDeclaredMethods":true +}, +{ + "name":"scala.collection.immutable.List", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true +}, +{ + "name":"scala.collection.immutable.Map", + "queryAllDeclaredMethods":true +}, +{ + "name":"scala.collection.immutable.Map$Map1", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true +}, +{ + "name":"scala.collection.immutable.Map$Map2", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true +}, +{ + "name":"scala.collection.immutable.Map$Map3", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true +}, +{ + "name":"scala.collection.immutable.MapOps", + "queryAllDeclaredMethods":true +}, +{ + "name":"scala.collection.immutable.Seq", + "queryAllDeclaredMethods":true +}, +{ + "name":"scala.collection.immutable.SeqOps", + "queryAllDeclaredMethods":true +}, +{ + "name":"scala.collection.immutable.StrictOptimizedMapOps", + "queryAllDeclaredMethods":true +}, +{ + "name":"scala.collection.immutable.StrictOptimizedSeqOps", + "queryAllDeclaredMethods":true }, { "name":"scala.reflect.ScalaSignature", @@ -1268,4 +2550,4 @@ "name":"sun.security.x509.SubjectKeyIdentifierExtension", "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] } -] \ No newline at end of file +] diff --git a/docker/native/native-image-configs/resource-config.json b/docker/native/native-image-configs/resource-config.json index fb4bfd85ba8..ae5bdb17391 100644 --- a/docker/native/native-image-configs/resource-config.json +++ b/docker/native/native-image-configs/resource-config.json @@ -1,11 +1,17 @@ { "resources":{ "includes":[{ + "pattern":"\\QMETA-INF/log4j-provider.properties\\E" + }, { "pattern":"\\QMETA-INF/maven/org.xerial.snappy/snappy-java/pom.properties\\E" }, { "pattern":"\\QMETA-INF/native/libnetty_transport_native_epoll.so\\E" }, { "pattern":"\\QMETA-INF/native/libnetty_transport_native_epoll_x86_64.so\\E" + }, { + "pattern":"\\QMETA-INF/org/apache/logging/log4j/core/config/plugins/Log4j2Plugins.dat\\E" + }, { + "pattern":"\\QMETA-INF/services/com.fasterxml.jackson.databind.Module\\E" }, { "pattern":"\\QMETA-INF/services/java.lang.System$LoggerFinder\\E" }, { @@ -18,40 +24,110 @@ "pattern":"\\QMETA-INF/services/java.rmi.server.RMIClassLoaderSpi\\E" }, { "pattern":"\\QMETA-INF/services/java.time.zone.ZoneRulesProvider\\E" + }, { + "pattern":"\\QMETA-INF/services/java.util.spi.ResourceBundleControlProvider\\E" }, { "pattern":"\\QMETA-INF/services/javax.management.remote.JMXConnectorServerProvider\\E" }, { "pattern":"\\QMETA-INF/services/javax.security.auth.spi.LoginModule\\E" }, { - "pattern":"\\Qkafka/kafka-version.properties\\E" + "pattern":"\\QMETA-INF/services/org.apache.logging.log4j.core.util.ContextDataProvider\\E" }, { - "pattern":"\\Qlinux/amd64/libzstd-jni-1.5.6-6.so\\E" + "pattern":"\\QMETA-INF/services/org.apache.logging.log4j.core.util.WatchEventService\\E" + }, { + "pattern":"\\QMETA-INF/services/org.apache.logging.log4j.spi.Provider\\E" + }, { + "pattern":"\\QMETA-INF/services/org.apache.logging.log4j.util.PropertySource\\E" + }, { + "pattern":"\\Qcom/fasterxml/jackson/module/scala/build.properties\\E" + }, { + "pattern":"\\Qjava/lang/Iterable.tasty\\E" + }, { + "pattern":"\\Qjava/util/AbstractCollection.tasty\\E" + }, { + "pattern":"\\Qjava/util/AbstractList.tasty\\E" + }, { + "pattern":"\\Qjava/util/ArrayList.tasty\\E" + }, { + "pattern":"\\Qjava/util/Collection.tasty\\E" + }, { + "pattern":"\\Qjava/util/LinkedHashMap.tasty\\E" + }, { + "pattern":"\\Qjava/util/List.tasty\\E" + }, { + "pattern":"\\Qkafka/docker/Appenders.tasty\\E" + }, { + "pattern":"\\Qkafka/docker/Configuration.tasty\\E" + }, { + "pattern":"\\Qkafka/docker/Log4jConfiguration.tasty\\E" + }, { + "pattern":"\\Qkafka/docker/Logger.tasty\\E" + }, { + "pattern":"\\Qkafka/docker/Loggers.tasty\\E" + }, { + "pattern":"\\Qkafka/docker/Properties.tasty\\E" + }, { + "pattern":"\\Qkafka/docker/Root.tasty\\E" + }, { + "pattern":"\\Qkafka/kafka-version.properties\\E" }, { "pattern":"\\Qlinux/aarch64/libzstd-jni-1.5.6-6.so\\E" }, { - "pattern":"\\Qnet/jpountz/util/linux/amd64/liblz4-java.so\\E" + "pattern":"\\Qlinux/amd64/libzstd-jni-1.5.6-6.so\\E" + }, { + "pattern":"\\Qlog4j2.StatusLogger.properties\\E" + }, { + "pattern":"\\Qlog4j2.component.properties\\E" + }, { + "pattern":"\\Qlog4j2.system.properties\\E" }, { "pattern":"\\Qnet/jpountz/util/linux/aarch64/liblz4-java.so\\E" + }, { + "pattern":"\\Qnet/jpountz/util/linux/amd64/liblz4-java.so\\E" }, { "pattern":"\\Qorg-xerial-snappy.properties\\E" }, { "pattern":"\\Qorg/slf4j/impl/StaticLoggerBinder.class\\E" }, { "pattern":"\\Qorg/xerial/snappy/VERSION\\E" + }, { + "pattern":"\\Qorg/xerial/snappy/native/Linux/aarch64/libsnappyjava.so\\E" }, { "pattern":"\\Qorg/xerial/snappy/native/Linux/x86_64/libsnappyjava.so\\E" }, { - "pattern":"\\Qorg/xerial/snappy/native/Linux/aarch64/libsnappyjava.so\\E" + "pattern":"\\Qscala/collection/convert/JavaCollectionWrappers$SeqWrapper.class\\E" + }, { + "pattern":"\\Qscala/collection/convert/JavaCollectionWrappers.tasty\\E" + }, { + "pattern":"\\Qscala/collection/convert/JavaCollectionWrappers/SeqWrapper.tasty\\E" + }, { + "pattern":"java.base:\\Qjava/lang/Iterable.tasty\\E" + }, { + "pattern":"java.base:\\Qjava/util/AbstractCollection.tasty\\E" + }, { + "pattern":"java.base:\\Qjava/util/AbstractList.tasty\\E" + }, { + "pattern":"java.base:\\Qjava/util/ArrayList.tasty\\E" + }, { + "pattern":"java.base:\\Qjava/util/Collection.tasty\\E" + }, { + "pattern":"java.base:\\Qjava/util/LinkedHashMap.tasty\\E" + }, { + "pattern":"java.base:\\Qjava/util/List.tasty\\E" }, { "pattern":"java.base:\\Qjdk/internal/icu/impl/data/icudt67b/nfkc.nrm\\E" }, { "pattern":"java.base:\\Qjdk/internal/icu/impl/data/icudt67b/uprops.icu\\E" + }, { + "pattern":"java.base:\\Qjdk/internal/icu/impl/data/icudt72b/nfc.nrm\\E" }, { "pattern":"java.base:\\Qjdk/internal/icu/impl/data/icudt72b/nfkc.nrm\\E" }, { "pattern":"java.base:\\Qjdk/internal/icu/impl/data/icudt72b/uprops.icu\\E" }, { "pattern":"java.base:\\Qsun/net/idn/uidna.spp\\E" + }, { + "pattern":"java.base:\\Qsun/text/resources/LineBreakIteratorData\\E" }, { "pattern":"jdk.jfr:\\Qjdk/jfr/internal/query/view.ini\\E" }]}, @@ -62,4 +138,4 @@ "name":"sun.security.util.Resources", "classNames":["sun.security.util.Resources"] }] -} \ No newline at end of file +} diff --git a/docker/native/native-image-configs/serialization-config.json b/docker/native/native-image-configs/serialization-config.json index 66df4a5dbdd..cddc568f1aa 100644 --- a/docker/native/native-image-configs/serialization-config.json +++ b/docker/native/native-image-configs/serialization-config.json @@ -125,4 +125,4 @@ ], "proxies":[ ] -} \ No newline at end of file +} diff --git a/gradle/dependencies.gradle b/gradle/dependencies.gradle index d207a9b6efb..5d26db761ca 100644 --- a/gradle/dependencies.gradle +++ b/gradle/dependencies.gradle @@ -150,7 +150,6 @@ libs += [ jacksonDatabind: "com.fasterxml.jackson.core:jackson-databind:$versions.jackson", jacksonDatabindYaml: "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:$versions.jackson", jacksonDataformatCsv: "com.fasterxml.jackson.dataformat:jackson-dataformat-csv:$versions.jackson", - jacksonModuleScala: "com.fasterxml.jackson.module:jackson-module-scala_$versions.baseScala:$versions.jackson", jacksonJDK8Datatypes: "com.fasterxml.jackson.datatype:jackson-datatype-jdk8:$versions.jackson", jacksonBlackbird: "com.fasterxml.jackson.module:jackson-module-blackbird:$versions.jackson", jacksonJakartarsJsonProvider: "com.fasterxml.jackson.jakarta.rs:jackson-jakarta-rs-json-provider:$versions.jackson",