How to configure another log4j configuration file in Tomcat?

16,278

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:

Servers

  • Next, click in Open lauch configuration:

Tomcat configuration

  • Add the log4j configuration argument in Tomcat and Apply.

JVM arguments

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"
Share:
16,278

Related videos on Youtube

JaskeyLam
Author by

JaskeyLam

blog: jaskey.github.io

Updated on October 15, 2022

Comments

  • JaskeyLam
    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
    JaskeyLam over 9 years
    So, 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
    JaskeyLam over 9 years
    I am not using Maven and I do not have log4j.xml , I open have properties file.
  • Jonatan Cloutier
    Jonatan Cloutier over 9 years
    You 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
    JaskeyLam over 9 years
    I add "-Dlog4j.configuration="E:\myworkspace\wodinow\src\debug_log‌​4j.properties" to my tomcat arguments, but the logs is not printed. It seems it still use my exisiting log4j.properties.
  • Jonatan Cloutier
    Jonatan Cloutier over 9 years
    You 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
    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
    JaskeyLam over 9 years
    And 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