8

I am developing a logging framework using Log4j. I am not able to figure out how to maintain separate log files for different environment, i.e., development, testing, staging and production.

Jonathon Faust
  • 12,206
  • 4
  • 48
  • 62
Nrusingha
  • 833
  • 5
  • 18
  • 33

2 Answers2

15

Firstly you'll need a different copy of your log4j.xml for each environment.

Lets call it log4j-dev.xml, log4j-test.xml, log4j-stage.xml and log4j-prod.xml each having their own settings like log file name and log levels.

You then pass in the corresponding file at the the server startup as a system property like below -

-Dlog4j.configuration=log4j-dev.xml

This URL has the example on how to pass this for Tomcat. The concept is the same for whichever server you are deploying on.

JoseK
  • 30,825
  • 14
  • 101
  • 130
  • Like @Daniel said in their comment, we had to use -Dlog4j.configurationFile=log4j-dev.xml on an Amazon Linux AMI (Centos) when using log4j v2.13.3 – Mobius May 29 '20 at 14:29
3

On Windows, I have used "set CATALINA_OPTS=-Dlog4j.configurationFile=log4j2-dev.xml" instead of log4j.configuration

SkyWalker
  • 26,885
  • 10
  • 68
  • 127
Alvin Yue
  • 31
  • 1