# Set root category priority to INFO and its only appender to CONSOLE.
log4j.rootCategory=FATAL, CONSOLE
# log4j.rootCategory=DEBUG, CONSOLE, LOGFILE

# Set the enterprise logger category to FATAL and its only appender to CONSOLE.
log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE
# log4j.logger.org.apache.axis.i18n.ProjectResourceBundle=INFO
log4j.logger.org.apache.ws.security.TIME=DEBUG
# log4j.logger.org.apache.ws.security.message.EnvelopeIdResolver=INFO
# log4j.logger.org.apache.ws.axis.security.WSDoAllSender=INFO
# log4j.logger.org.apache.ws.security.WSSecurityEngine=INFO
# log4j.logger.org.apache.xml.security.encryption.XMLCipher=DEBUG

# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Threshold=DEBUG
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=- %m%n

# LOGFILE is set to be a File appender using a PatternLayout.
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=axis.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.Threshold=DEBUG
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
