Мой проект использует Slf4j версии 1.7.25 и spring-boot-starter-log4j2 v1.5.21.RELEASE. Я настроил файл log4j2.xml с действием Удалить. Удаление, кажется, не работает вообще. Я пытался добавить
<configuration status="trace">
Но он не показывает никаких журналов ошибок, относящихся к путям.
Вот вывод журнала:
2019-05-25 18:41:20,124 main DEBUG Building Plugin[name=Delete, class=org.apache.logging.log4j.core.appender.rolling.action.DeleteAction].
2019-05-25 18:41:20,124 main DEBUG createDeleteAction(basePath="/logs/hadoop/archive/", followLinks="false", maxDepth="2", testMode="false", PathSorter=null, ={IfAll[IfFileName(glob:okie-*.log.gz), IfLastModified(age=P1D)]}, ScriptCondition=null, Configuration(okieLog4j2Config))
2019-05-25 18:41:20,124 main DEBUG Building Plugin[name=DefaultRolloverStrategy, class=org.apache.logging.log4j.core.appender.rolling.DefaultRolloverStrategy].
2019-05-25 18:41:20,125 main DEBUG createStrategy(max="1", min="null", fileIndex="null", compressionLevel="null", ={DeleteAction[basePath=/logs/hadoop/archive, options=[], maxDepth=2, conditions=[IfAll[IfFileName(glob:okie-*.log.gz), IfLastModified(age=P1D)]]]}, stopCustomActionsOnError="true", Configuration(okieLog4j2Config))
Также, пожалуйста, посмотрите на мой конфигурационный XML-файл ниже
<?xml version="1.0" encoding="UTF-8"?>
<configuration name="okieLog4j2Config" status="trace"
strict="true" monitorInterval="5">
<properties>
<property name="patternlayout">%d [%t] %-5level %logger{36} -
%msg%n%throwable{full}
</property>
</properties>
<appenders>
<appender name="Console" type="Console" target="SYSTEM_OUT">
<layout type="PatternLayout" pattern="${patternlayout}"/>
</appender>
<Routing name="File">
<Routes pattern="$${ctx:ROUTING_KEY}">
<Route>
<RollingFile name="okie.log" bufferedIO="true" immediateFlush="true" append="true"
fileName="logs/${ctx:ROUTING_KEY}/okie.log"
filePattern="logs/${ctx:ROUTING_KEY}/archive/$${date:yyyy-MM}/okie-%d{MM-dd-yyyy}-%i.log.gz">
<PatternLayout>
<pattern>%d{ISO8601} [%t] %p %c %L - %m%n</pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy/>
<!--<SizeBasedTriggeringPolicy size="10 MB"/>-->
</Policies>
<DefaultRolloverStrategy max="1">
<Delete basePath="/logs/hadoop/archive/" maxDepth="2">
<IfAll>
<IfFileName glob="okie-*.log.gz"/>
<IfLastModified age="1d"/>
</IfAll>
</Delete>
</DefaultRolloverStrategy>
</RollingFile>
</Route>
</Routes>
</Routing>
</appenders>
<loggers>
<Logger name="org.springframework" level="INFO">
<AppenderRef ref="Console"/>
</Logger>
<root level="INFO">
<appender-ref ref="Console" level="INFO"/>
<appender-ref ref="File" level="WARN"/>
</root>
</loggers>
</configuration>
Файлы журнала генерируются, как задумано, с соответствующим именем, которое указывается во время выполнения, и работа по очереди также работает. Только удаление не происходит.
Также, пожалуйста, дайте мне знать, если мне нужно больше информации.
ОБНОВЛЕНИЕ РЕШЕНИЯ:
Косая черта "/" была проблемой в путях, которые я упомянул для удаления. Удаление это исправило это. Но я все еще удивляюсь, почему он не появился в журналах.