1
votes

I am using log4j ogging for my project. Unfortunately, i am not able to log the info levels in the application that i havelogged manually.. though it is logging the database logs perfectly!

Here is my properties file :

log4j.rootLogger=OFF

log4j.appender.serviceLog=org.apache.log4j.RollingFileAppender
log4j.appender.serviceLog.File=C:/Users/prateekg/Desktop/log4j/log

log4j.appender.dbLog=org.apache.log4j.RollingFileAppender
log4j.appender.dbLog.File=C:/Users/prateekg/Desktop/log4j/dbLog

log4j.appender.serviceLog.MaxFileSize=1MB
log4j.appender.serviceLog.MaxBackupIndex=1

log4j.appender.serviceLog.layout=org.apache.log4j.PatternLayout
log4j.appender.serviceLog.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

log4j.appender.dbLog.layout=org.apache.log4j.PatternLayout
log4j.appender.dbLog.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

log4j.category.serviceLog=INFO,serviceLog
log4j.category.org.springframework.jdbc=DEBUG, dbLog

EDIT:

This is my log code:

public static Logger logger = Logger.getLogger(Controller.class);
Boolean commit=false;
public Controller(DashBoardDAO dao,MessageProcessor mp, HandlerFactory hf, ToXML xml)
{
    this.dao=dao;
    this.mp=mp;
    this.hf=hf;
    this.xml=xml;
    PropertyConfigurator.configure("log4j.properties");
}

public Boolean controlFlow(Message message)
{
    Handler handler=null;
    String data[]=null;
    Boolean flag=false;

    int count=0;

    handler=initializeHandlerFactory(message);
    data=getMessage(handler,message);
    flag=validate(data);
    count=getEventCount(data);
    //commit=mp.flag1;
    //System.out.println("The flag is "+flag);

    if(flag)
    {
        System.out.println("inside flag");
        String elementNames[]=dao.getElementNames(Integer.parseInt(data[0]));
        System.out.println("No of tags "+elementNames.length);
        logger.info("No of tags in the generated XML is "+elementNames.length);
        File xmlFile=xml.convertToXML(elementNames, data);
        logger.info("Temporary XML File created");
        logger.info("Data sent for insertion");
        dao.insert(count, data,xmlFile);
        Boolean f=xmlFile.delete();
        System.out.println("Temp XML file Deleted: "+f);
        if(f)
        {
        logger.info("Temporary XML File deleted");
        commit=mp.flag1;
        }
        else
            logger.info("Error in deleting temporary XML File");
    }
1
post the log code in you service please?OQJF
your rootLogger is turned off and you do not seem to have defined a custom logger. Try turning the root logger on and adding an appender for it.Boris the Spider
when i add a rootlogger everything from a to z is logged in the file .. i want just want info level logging in the file .. !!Chandeep
@bmorris591 what about log4j.category.serviceLog=INFO,serviceLog? This is a custom logger, isn't it? But yes, we need to see the log code...skirsch
EDIT: Posted the log code!Chandeep

1 Answers

1
votes

You either need to define your logger as Logger.getLogger("serviceLog") or define a custom appender matching your Class

log4j.category.my.package.Controller=INFO,serviceLog

or your package

log4j.category.my.package=INFO,serviceLog

Also, calling PropertyConfigurator.configure("log4j.properties"); is not necessary, as this is the default configuration file name being looked up by log4j at startup.