micronaut-projects / micronaut-core

Micronaut Application Framework
http://micronaut.io
Apache License 2.0
6.07k stars 1.07k forks source link

LOGBACK SMTPAppender loggerContext is null #11039

Closed jaywokim closed 2 months ago

jaywokim commented 2 months ago

Expected Behavior

server starts normally

Actual Behaviour

2024-07-30 21:48:38 LOGBACK: No context given for ch.qos.logback.core.pattern.parser.Compiler@2cfb4a64 2024-07-30 21:48:38 Failed to instantiate [ch.qos.logback.classic.LoggerContext] 2024-07-30 21:48:38 Reported exception: 2024-07-30 21:48:38 ch.qos.logback.core.LogbackException: Failed to initialize or to run Configurator: fhirmessage.StaticLogbackConfiguration 2024-07-30 21:48:38 at ch.qos.logback.classic.util.ContextInitializer.invokeConfigure(ContextInitializer.java:133) 2024-07-30 21:48:38 at ch.qos.logback.classic.util.ContextInitializer.autoConfig(ContextInitializer.java:93) 2024-07-30 21:48:38 at ch.qos.logback.classic.util.ContextInitializer.autoConfig(ContextInitializer.java:66) 2024-07-30 21:48:38 at ch.qos.logback.classic.spi.LogbackServiceProvider.initializeLoggerContext(LogbackServiceProvider.java:52) 2024-07-30 21:48:38 at ch.qos.logback.classic.spi.LogbackServiceProvider.initialize(LogbackServiceProvider.java:41) 2024-07-30 21:48:38 at org.slf4j.LoggerFactory.bind(LoggerFactory.java:196) 2024-07-30 21:48:38 at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:183) 2024-07-30 21:48:38 at org.slf4j.LoggerFactory.getProvider(LoggerFactory.java:486) 2024-07-30 21:48:38 at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:472) 2024-07-30 21:48:38 at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:421) 2024-07-30 21:48:38 at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:447) 2024-07-30 21:48:38 at io.micronaut.runtime.Micronaut.(Micronaut.java:51) 2024-07-30 21:48:38 at fhirmessage.Application.main(Application.java:8) 2024-07-30 21:48:38 Caused by: java.lang.NullPointerException: Cannot invoke "ch.qos.logback.classic.LoggerContext.isPackagingDataEnabled()" because "loggerContext" is null 2024-07-30 21:48:38 at ch.qos.logback.classic.pattern.EnsureExceptionHandling.process(EnsureExceptionHandling.java:49) 2024-07-30 21:48:38 at ch.qos.logback.core.pattern.PatternLayoutBase.start(PatternLayoutBase.java:87) 2024-07-30 21:48:38 at ch.qos.logback.core.net.SMTPAppenderBase.addTo(SMTPAppenderBase.java:559) 2024-07-30 21:48:38 at fhirmessage.StaticLogbackConfiguration.configure(StaticLogbackConfiguration.java:36) 2024-07-30 21:48:38 at ch.qos.logback.classic.util.ContextInitializer.invokeConfigure(ContextInitializer.java:128) 2024-07-30 21:48:38 ... 12 more 2024-07-30 21:48:38
2024-07-30 21:48:38 | \/ (_) | | 2024-07-30 21:48:38 | |\/| | |/ | '/ | ' \ / ` | | | | | 2024-07-30 21:48:38 | | | | | (| | | () | | | | (| | || | | 2024-07-30 21:48:38 || |||_|_| _/|| ||_,|_,|\|

Steps To Reproduce

add dependencies to project:

implementation("ch.qos.logback:logback-core:1.5.6")
implementation("ch.qos.logback:logback-classic:1.5.6") 

implementation("com.sun.mail:jakarta.mail:2.0.1")

in your logback.xml file add smtp appender

ERROR smtp.test.net 888 true false rohndoe@test.net password Rob.Washington@YMCA.NET johndoe@test.net Messaging: %logger{20} - %msg

Environment Information

MAC JDK 17

Example Application

No response

Version

4.3.8

jaywokim commented 2 months ago

I forgot to mention the error happens in docker container not running locally: Dockerfile:

build stage

FROM openjdk:17-jdk-slim RUN mkdir -p /usr/src/app

FROM gradle:8.7-jdk17-jammy as build COPY --chown=gradle:gradle . /usr/src/app WORKDIR /usr/src/app RUN gradle build --no-daemon

create image stage

FROM eclipse-temurin:17-jdk-jammy

RUN apk --no-cache add curl

COPY --from=build /usr/src/app/build/libs/redcap-0.1-all-optimized.jar redcap.jar

RUN sh -c 'touch ./redcap.jar' ENTRYPOINT ["java","-jar","./redcap.jar"]

graemerocher commented 2 months ago

I don't see how this is a Micronaut bug

jaywokim commented 2 months ago

You are right this isn't a micronaut issue.

jaywokim commented 2 months ago

FYI:

fixed by removing " replaceLogbackXml = true" in gradle build file micronaut settings aot

aot { // Please review carefully the optimizations enabled below // Check https://micronaut-projects.github.io/micronaut-aot/latest/guide/ for more details optimizeServiceLoading = false convertYamlToJava = false precomputeOperations = true cacheEnvironment = true optimizeClassLoading = true deduceEnvironment = true optimizeNetty = true replaceLogbackXml = true }