Modus Operandi
Modus Operandi

Reputation: 621

Is there a way to externalize Spring [Boot] app's log4j2 config on Tomcat?

Our Spring Boot application uses log4j2 for logging, but the admins of the server we are going to deploy it to require that:

  1. the logging be fully configurable on their end, i.e., there must be a log4j2.xml file that they can edit to adjust logging formats, files, levels etc., and

  2. The configuration must not be lost or overridden when a new version of the app is deployed (the upload war -> stop tomcat -> delete webapp folder -> start Tomcat) process will be automated.

Ideally, the path to log4j2.xml should be set in the webapps context .xml file — since that's where the DB connection config is. But I can't seem to find a way to make this work. All search results talk about using META-INF/web.xml or application.properties files (not an option, since they get overwritten on deploy), and the only SO question I could find (Spring application without web.xml log4j configuration) did not work for me ("No Configuration was provided") exception on startup.

Upvotes: 1

Views: 3218

Answers (1)

PaulNUK
PaulNUK

Reputation: 5209

Set the environment variable logging.config to be the location of your log4j2.xml file.

It's also recommended that you call it log4j2-spring.xml

See https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html

section "Custom log configuration"

Upvotes: 2

Related Questions