# Please refer to https://logging.apache.org/log4cxx/usage.html for option details

log4j.rootLogger=INFO, rootConsoleAppender, rootFileAppender

# rootConsoleAppender prints out messages to console
log4j.appender.rootConsoleAppender=org.apache.log4j.ConsoleAppender
log4j.appender.rootConsoleAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.rootConsoleAppender.layout.ConversionPattern=%d %-5p [%c] - %m%n

# rootFileAppender dumps messages to a file
#log4j.appender.rootFileAppender=org.apache.log4j.FileAppender
log4j.appender.rootFileAppender=org.apache.log4j.RollingFileAppender
log4j.appender.rootFileAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.rootFileAppender.layout.ConversionPattern=%d %-5p [%c] - %m%n
log4j.appender.rootFileAppender.File=catalog.log
log4j.appender.rootFileAppender.MaxFileSize=100KB

# Change the log level (INFO, DEBUG, etc.) here
log4j.logger.QueryAdapter=INFO
log4j.logger.PublishAdapter=INFO

