@ GregT Как вы знаете, log4j имеет три основных конструкции - Appenders, приоритет (logger) и макет шаблона.По умолчанию корневой Logger устанавливается, когда мы создаем экземпляр log4j, например Logger log = Logger.getInstance(Somclass.class)
->, он добавляет аддитивность корневого логгера (это означает, что приоритет и уровень, установленные в корневом логгере, наследуются этим дочерним логгером по умолчанию).Теперь вы можете определить свой собственный приоритет и уровень в конфигурации lo4j (либо в XML, либо в файле свойств).
Вот то, что я настроил для того же.Устраняя политику запуска и динамическое именование, вот пример конфигурации с использованием файла .properties
log4j.threshold = INFO
#Specify the appender and the priority
log4j.rootLogger = DEBUG, Appender1, Appender2
log4j.appender.Appender1 = org.apache.log4j.ConsoleAppender
log4j.appender.Appender2 = org.apache.log4j.RollingFileAppender
log4j.appender.Appender2.File = app/log1.log
log4j.appender.Appender1.layout = org.apache.log4j.PatternLayout
log4j.appender.Appender2.layout = org.apache.log4j.PatternLayout
# Print the date in ISO 8601 format
log4j.appender.Appender1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
log4j.appender.Appender2.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
Примечание: Здесь, если вы устанавливаете порог на INFO, и даже если приоритет установлен на уровне DEBUG, он простораспечатывает операторы, соответствующие уровню INFO, в экземпляре «log».
Обратите внимание, что мы могли бы также установить разные журналы для разных модулей
log4j.rootLogger=DEBUG
# AdminFileAppender - used to log messages in the admin.log file.
log4j.appender.AdminFileAppender=org.apache.log4j.FileAppender
log4j.appender.AdminFileAppender.File=app/admin.log
log4j.appender.AdminFileAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.AdminFileAppender.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
# ReportFileAppender - used to log messages in the report.log file.
log4j.appender.ReportFileAppender=org.apache.log4j.FileAppender
log4j.appender.ReportFileAppender.File=app/report.log
log4j.appender.ReportFileAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.ReportFileAppender.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
**log4j.logger.com.vaannila.admin=,AdminFileAppender
log4j.logger.com.vaannila.report=,ReportFileAppender**
Вы можете использовать RollingFileAppender, если хотите выполнить бросокновые файлы, если вы достигнете заданного размера.Здесь журналы модуля администратора записываются в файл " admin.log ", а модуль отчета записывается в файл " report.log "
Надеюсь, это поможет
РЕДАКТИРОВАТЬ: Я боюсь, что политика запуска на основе времени / размера работает хорошо и только с конфигурацией XML, а не с конфигурацией файла свойств.Пожалуйста, проверьте это.А также вам не нужно включать зависимость apache-log4j-extras.1.2.17 поставляется с ним.Вот конфигурация на основе XML, которую я использую
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
</Console>
<RollingFile name="info" filepattern="apps/logs/${hostName}-info-%i.log"
filename="apps/logs/${hostName}-info.log">
<PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss}] [%-5p] %X{userName} [%C] %F:%L - %m%n" />
<Policies>
<SizeBasedTriggeringPolicy size="20 MB" />
</Policies>
<DefaultRolloverStrategy max="1" min="1" />
</RollingFile>
<RollingFile name="debug" filepattern="apps/logs/${hostName}-debug-%i.log"
filename="apps/logs/${hostName}-debug.log">
<PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss}] [%-5p] %X{userName} [%C] %F:%L - %m%n" />
<Policies>
<SizeBasedTriggeringPolicy size="20 MB" />
</Policies>
<DefaultRolloverStrategy max="1" min="1" />
</RollingFile>
<Routing name="RoutingAppender">
<Routes pattern="${ctx:logFileName}">
<Route>
<RollingFile name="${ctx:logFileName}-logfile"
fileName="apps/logs/${hostName}-${ctx:logFileName}.log"
filePattern="apps/logs/${hostName}-${ctx:logFileName}-%i.log">
<PatternLayout>
<pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS}[%X{logTrackingId}] [%t] %c{1} - %msg%n
</pattern>
</PatternLayout>
<Policies>
<SizeBasedTriggeringPolicy size="20 MB" />
</Policies>
<DefaultRolloverStrategy max="1" min="1" />
</RollingFile>
</Route>
</Routes>
</Routing>
<RollingFile name="RollingFileMonitor" filepattern="apps/logs/${hostName}-monitor-%i.log"
filename="apps/logs/${hostName}-monitor.log">
<PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss}] [%-5p] %X{userName} [%C] %F:%L - %m%n" />
<Policies>
<SizeBasedTriggeringPolicy size="20 MB" />
</Policies>
</RollingFile>
<RollingFile name="RollingFileAPM" filename="apps/logs/${hostName}-apm.log"
filepattern="apps/logs/${hostName}-apm-%i.log">
<PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss}] [%-5p] %X{userName} [%C] %F:%L - %m%n" />
<Policies>
<SizeBasedTriggeringPolicy size="20 MB" />
</Policies>
<DefaultRolloverStrategy min="1" max="1" />
</RollingFile>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="Console" />
</Root>
<Logger name="com.XXXX.app.service" additivity="false">
<AppenderRef ref="RollingFileMonitor" />
</Logger>
<Logger name="com.XXXX.apm" additivity="false">
<AppenderRef ref="RollingFileAPM" />
</Logger>
<Logger name="com.XXXX,config" level="info" additivity="false">
<AppenderRef ref="info" />
</Logger>
<Logger name="com.XXXXXX.controller" level="info" additivity="false">
<AppenderRef ref="RoutingAppender" />
</Logger>
<Logger name="com.XXXXX.impl" level="info" additivity="false">
<AppenderRef ref="RoutingAppender" />
</Logger>
<Logger name="com.XXXXX.impl" level="info" additivity="false">
<AppenderRef ref="RoutingAppender" />
</Logger>
<Logger name="com.XXXX.logging" level="info" additivity="false">
<AppenderRef ref="RoutingAppender" />
</Logger>
<Logger name="com.zaxxer.hikari" level="debug" additivity="false">
<AppenderRef ref="debug" />
</Logger>
</Loggers>
Надеюсь, это ответит на ваш вопрос.