Java – Initializing log4j for a stand alone application

javalog4jlogging

I'm a newbie to log4j. This is what I have . I have about 20 files in different packages in a STAND ALONE JAVA APPLICATION.
I am trying to use and write log files.

Following is my log4j.properties file which is in my class path:

log4j.appender.R = org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File = /ParentFolder/ChildFolder/application.log
log4j.appender.R.Append = true
log4j.appender.R.DatePattern = '.'yyy-MM-dd
log4j.appender.R.layout = org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} %c{1} [%p] %m%n

Following is the code to initialize logging in my main method

final String LOG_FILE = "C:/eclipse_workspace/lib/log4j.properties"; 
      Properties logProp = new Properties();      
      try     
      {      
       logProp.load(new FileInputStream (LOG_FILE));  
            PropertyConfigurator.configure(logProperties);      
            logger.info("Logging enabled");    
      }     
      catch(IOException e)                
      {       
     System.out.println("Logging not enabled");       
                 }  

In every java class of the application I have the following code

import org.apache.log4j.*;

private static final Logger logger = Logger.getLogger(TheActualClassName.class); 

But I get the following warning messages when I run the app.

log4j:WARN No appenders could be found for logger (com.xxx.myApp.MainProgram.MyFileName).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

What am I doing wrong?? The log file "application.log" is not being generated

Best Answer

May need the following line:

# Set root logger level to INFO and appender to R.
log4j.rootLogger=INFO, R

The root logger is always available and does not have a name.

Since the version 1.2.7, log4j (with the LogManager class) looks for log4j.xml in the classpath first. If the log4j.xml not exists, then log4j (with the LogManager class) looks for log4j.properties in the classpath.

Related Topic