How to configure another log4j configuration file in Tomcat?
Solution 1
You can configure another log4j configuration file in your environment in eclipse:
- First, locate your Tomcat server in eclipse (servers tab) and double-click:
- Next, click in Open lauch configuration:
- Add the log4j configuration argument in Tomcat and Apply.
Enjoy!
See more in Apache log4j 1.2 - Short introduction to log4j
Solution 2
If you do not have the log4j file in your path, you'll need to add something like this:
-Dlog4j.configuration="file:///C:/<path>/<nameifLog4jFile>"
Also if you use an environment variable in the log4j file, you need to declare it in the arguments. I have an env var by the name MAS_HOME that I use to specify the path to the log file. I then had to add this parameter to VM args:
-DMAS_HOME="c:\EE"
Related videos on Youtube
Comments
-
JaskeyLam over 1 year
I am using log4j1.2, and I am new to log4j.
I hope that when I am debugging in my local machine ,the logs will be printed to console. But when it is running in PROD , it just logs to file, since I hope to have the least overhead.
I hope that I can achieve this(only print to console when in local machine rather than the prod env) without modifying the properties file every time when I deploy.
Here is what my log4j.properties looks like:
log4j.rootLogger=DEBUG,BAE,console,error ##################production logs############### log4j.appender.BAE=org.apache.log4j.FileAppender log4j.appender.BAE.encoding=utf-8 log4j.appender.BAE.Append=true log4j.appender.BAE.Threshold=INFO log4j.appender.BAE.layout=org.apache.log4j.SimpleLayout ####################Conole logs#################### ##(hope only enable when debuging in local machine) log4j.appender.console= org.apache.log4j.ConsoleAppender log4j.appender.console.encoding=utf-8 ## DEBUG logs log4j.appender.console.Threshold = Trace log4j.appender.console.layout=org.apache.log4j.SimpleLayout ##################error logs########################## log4j.appender.error=org.apache.log4j.FileAppender log4j.appender.error.File=/home/bae/log/error.log log4j.appender.error.Threshold = ERROR log4j.appender.error.Append=true log4j.appender.error.layout=org.apache.log4j.SimpleLayout
-
JaskeyLam over 9 yearsSo, what about my properties file, do I need to remove something? Now, if i persists my ole settings, the prod env will still print to the console which is useless.
-
JaskeyLam over 9 yearsI am not using Maven and I do not have log4j.xml , I open have properties file.
-
Jonatan Cloutier over 9 yearsYou could add a second property file that would be specified only in eclipse jvm param. that file doesn't need to be name log4j.xml so it wont be pickedup by the automatic config. or it can be outside your class path
-
JaskeyLam over 9 yearsI add "-Dlog4j.configuration="E:\myworkspace\wodinow\src\debug_log4j.properties" to my tomcat arguments, but the logs is not printed. It seems it still use my exisiting log4j.properties.
-
Jonatan Cloutier over 9 yearsYou have to prefix it with "file:" if it's not in your class path. If it is you should have a path relative the classpath
-
JaskeyLam over 9 years-Dlog4j.configuration=file:E:\myworkspace\wodinow\src\debug_log4j.properties .. No use, it seems it still look for my old existing log4j.properties.
-
JaskeyLam over 9 yearsAnd I rename my old existing properties into a strange name that ecplise will not recognize, the output says "log4j:WARN Please initialize the log4j system properly", so it seems the vm arguments is not working