-
-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Description
Description
I have created a java sample where I am only initializing the logger using LogManager.
Below is my sample code
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class TestLog {
private final static Logger s_logger=LogManager.getLogger(TestLog.class);
public static void main(String[] args) {
}
When executing this code from inside IBM DB2 11.1 using a procedure, I am getting following exception.
java.lang.BootstrapMethodError: java.lang.ExceptionInInitializerError
at org.apache.logging.log4j.spi.AbstractLogger.<clinit>(AbstractLogger.java:107)
at org.apache.logging.log4j.LogManager.<clinit>(LogManager.java:60)
at com.test.TestLog.<clinit>(TestLog.java:11)
Caused by: java.lang.ExceptionInInitializerError
at java.lang.J9VMInternals.ensureError(J9VMInternals.java:137)
at java.lang.J9VMInternals.recordInitializationFailure(J9VMInternals.java:126)
at org.apache.logging.log4j.status.StatusLogger.getLogger(StatusLogger.java:564)
at org.apache.logging.log4j.internal.DefaultLogBuilder.<clinit>(DefaultLogBuilder.java:40)
at java.lang.Class.forNameImpl(Native Method)
at java.lang.Class.forName(Class.java:343)
at java.lang.invoke.MethodType.nonPrimitiveClassFromString(MethodType.java:311)
at java.lang.invoke.MethodType.parseIntoClasses(MethodType.java:373)
at java.lang.invoke.MethodType.fromMethodDescriptorString(MethodType.java:286)
at java.lang.invoke.MethodHandle.getCPMethodTypeAt(Native Method)
at java.lang.invoke.MethodHandle.resolveInvokeDynamic(MethodHandle.java:849)
... 3 more
Caused by: java.lang.NullPointerException: level
at java.util.Objects.requireNonNull(Objects.java:239)
at org.apache.logging.log4j.status.StatusConsoleListener.<init>(StatusConsoleListener.java:68)
at org.apache.logging.log4j.status.StatusConsoleListener.<init>(StatusConsoleListener.java:54)
at org.apache.logging.log4j.status.StatusLogger.<init>(StatusLogger.java:533)
at org.apache.logging.log4j.status.StatusLogger$InstanceHolder.<clinit>(StatusLogger.java:505)
... 12 more
Below is my procedure definition.
CREATE or REPLACE PROCEDURE ING_TEST (IN result VARCHAR(100)) LANGUAGE JAVA PARAMETER STYLE JAVA MODIFIES SQL DATA EXTERNAL NAME 'com.test.TestLog!testlog4j' / GRANT EXECUTE ON PROCEDURE ING_TEST TO PUBLIC WITH GRANT OPTION /
When using log4j2 2.23.0 jar everything works fine. But as I replaced log4j2 2.23.1 it starts giving above exception.
Configuration
log4j2 2.23.1
IBM DB2 version 11.1
IBM Java
java version "1.8.0" Java(TM) SE Runtime Environment (build pwa6480sr2fp10-20160108_01(SR2 FP10)) IBM J9 VM (build 2.8, JRE 1.8.0 Windows Server 2016 Datacenter amd64-64 Compressed References 20160106_284759 (JIT enabled, AOT enabled) J9VM - R28_20160106_1341_B284759 JIT - tr.r14.java_20151209_107110.02 GC - R28_20160106_1341_B284759_CMPRSS J9CL - 20160106_284759) JCL - 20151231_01 based on Oracle jdk8u71-b15
Version: [2.23.1]
Operating system: [Windows Server 2016]
JDK: [java version "1.8.0"
Java(TM) SE Runtime Environment (build pwa6480sr2fp10-20160108_01(SR2 FP10))
IBM J9 VM (build 2.8, JRE 1.8.0 Windows Server 2016 Datacenter amd64-64 Compressed References 20160106_284759 (JIT enabled, AOT enabled)
J9VM - R28_20160106_1341_B284759
JIT - tr.r14.java_20151209_107110.02
GC - R28_20160106_1341_B284759_CMPRSS
J9CL - 20160106_284759)
JCL - 20151231_01 based on Oracle jdk8u71-b15]