0

I am using the Listener Class which is consisting of few log methods as shown below to log for TestNG tests. I want only listener class logs to be printed in my console and Full logs shouls go to the FullLog file. Full logs are moving to the Full log file, but in console am getting both full logs and Listener Class logs. How do i configure the log4j property file for the same.

Listener class:

public class SimpleListener implements ITestListener {           
    private static Logger m_log = Logger.getLogger(SimpleListener.class);  

    public void onFinish(ITestContext itestcontext) {          
        m_log.info("onFinish() is called");      }        

    public void onStart(ITestContext itestcontext) {         
        m_log.info("onStart() is called");      
        }        
}

my log4j Property file:

log4j.rootLogger=INFO, FullLogAppender, ConsoleAppender
log4j.logger.TestLog=INFO, BreakPointAppender

#Console Log Appender
log4j.appender.ConsoleAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.ConsoleAppender=org.apache.log4j.ConsoleAppender
log4j.appender.ConsoleAppender.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
log4j.appender.ConsoleAppender.Target=System.out

#Full Log Appender
log4j.appender.FullLogAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.FullLogAppender.File=mfgLogs/FullLogs/FullLog.log
log4j.appender.FullLogAppender=org.apache.log4j.RollingFileAppender
log4j.appender.FullLogAppender.layout.ConversionPattern=%d %-5p %c  %x- %m%n
log4j.appender.FullLogAppender.Append=false Dec 12 12:41:11 IST 2012

Expected Result in console:

11:29:33,159  INFO SimpleListener:15 - onStart() is called
11:29:50,372  INFO SimpleListener:31 - runTest.....
11:30:23,637  INFO SimpleListener:23 - Failed 
11:30:24,402  INFO SimpleListener:12 - onFinish() is called
4

1 に答える 1

0
  • remove console appender from root logger

     log4j.rootLogger=INFO, FullLogAppender
    
  • add a logger for your listener

    log4j.logger.xxxx.SimpleListener =INFO, ConsoleAppender
    

xxxx.SimpleListener will be the fully qualified class name of your listener;

  • if you don't want the listener's log appears in the full log file, set additivity to false

    log4j.additivity.xxxx.SimpleListener=false
    
于 2013-03-27T07:30:03.540 に答える