Search code examples
javalogginglog4jjava.util.logging

log to a file hosted on tomcat


I want to log my application output to a file hosted on my tomcat server. log4j.properties set is:

log4j.rootLogger=INFO, stdout, R

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n

log4j.appender.R.MaxFileSize=1000KB
log4j.appender.R.MaxBackupIndex=5
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=${catalina.home}/logs/initiate.log
log4j.appender.stdout=org.apache.log4j.FileAppender
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d %p [%c] - %m%n

It does create initiate.log file but my log statements are not added to it. What is the issue? Or how will I set the properties using java Logger to output to fil


Solution

  • You need to define a way to access file logger somewhere in your java code

    import org.apache.log4j.Logger;
    
    private static Logger logger= Logger.getLogger("R");//fileLoggerName: R in this case
    

    and then access the file like below

    logger.error("Whatever message is!!"); 
    //OR 
    logger.info("message to write", exceptionObjectForCompleteTrace);