Если у вас есть что-то вроде следующего в ваших log4j.properties, вы увидите дубликаты в выводе:
log4j.rootLogger=error, myappender
log4j.logger.com.sample=warn, myappender
log4j.logger.com.sample.deeper.package=all, myappender
исправить это на:
log4j.rootLogger=error, myappender
log4j.logger.com.sample=warn
log4j.logger.com.sample.deeper.package=all
Edit:
Далее будут записываться журналы фатальной ошибки и уровня ошибок из всех классов, журналы фатальной ошибки, журналы ошибок и предупреждений из классов com.sample. * И все журналы из com.sample.deeper.package. * Классы в / var / log / myappender /myappender.log файл.
Сохранить как log4j.properties в вашем корневом пакете:
# This appender is not used in this example.
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c - %m%n
# But this one is used.
log4j.appender.myappender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.myappender.DatePattern='.'yyyy-MM-dd
log4j.appender.myappender.File=/var/log/myappender/myappender.log
log4j.appender.myappender.layout=org.apache.log4j.PatternLayout
log4j.appender.myappender.layout.ConversionPattern=%d{ABSOLUTE} %5p %c - %m%n
log4j.appender.myappender.Encoding=UTF-8
log4j.rootLogger=error, myappender
log4j.logger.com.sample=warn
log4j.logger.com.sample.deeper.package=all
В каждом вашем классе вам нужен регистратор:
private static Logger logger = Logger.getLogger(ThisClassName.class);
И вам больше не нужен код, который у вас есть в вопросе.