# Set root logger level to DEBUG and its only appender to A1.
log4j.rootLogger=TRACE, A1

# A1 is set to be a ConsoleAppender.
log4j.appender.A1=org.apache.log4j.ConsoleAppender

# A1 uses PatternLayout.
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.target=System.err
#log4j.appender.A1.layout.ConversionPattern=%d{dd-MMM HH:MM:SS,SSS} %p %c %m%n
#log4j.appender.A1.layout.ConversionPattern=%d{hh:mm:ss,SSS} %-14t %-14c  %m%n
log4j.appender.A1.layout.ConversionPattern=%d{ss,SSS} %-5p %-12c  %m%n

log4j.logger.Executor = ERROR
log4j.logger.Sync.Log = ERROR
log4j.logger.Sync.Core = ERROR
log4j.logger.Scheduler = ERROR

#log4j.logger.Sync = DEBUG
#log4j.logger.Sync.Log = ERROR
#log4j.logger.SyncInterestTable = TRACE
#log4j.logger.AppDataFetch = TRACE
#log4j.logger.Test = TRACE
#log4j.logger.bgpparser=TRACE
#log4j.logger.bgpparser.AttributeType=ERROR
#log4j.logger.bgpparser.MRTCommonHeader=ERROR

