2014-09-25 4 views
1

Я только что начал использовать log4j2 с slf4j2, но мне грозит проблема, когда я пытаюсь ежедневно создавать скользящие файлы журналов. Я могу создать активный файл журнала, но когда я меняю системную дату на один день, ведение журнала происходит в том же активном файле, который, как я думал, должен был архивировать журналы предыдущих дней в другой файл.log4j2 Не создавая журналы RollingFile

Ниже приводится log4j2.xml:

<?xml version="1.0" encoding="UTF-8"?> 
 
<Configuration status="ERROR" monitorInterval="5"> 
 
\t <Properties> 
 
\t \t <Property name="log-path">${sys:catalina.base}/logs</Property> 
 
\t </Properties> 
 
\t <Appenders> 
 
\t \t <Console name="Console" target="SYSTEM_OUT"> 
 
\t \t \t <PatternLayout 
 
\t \t \t \t pattern="%d{dd-MMM-YYYY HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" /> 
 
\t \t </Console> 
 
\t \t <RollingFile name="file-gen" fileName="${log-path}/demopro.log" 
 
\t \t \t filePattern="${log-path}/%d{yyyy-MM}/demopro-%d{dd-MM-yyyy}.log.gz"> 
 
\t \t \t <PatternLayout 
 
\t \t \t \t pattern="%d{dd-MMM-YYYY HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" /> 
 
\t \t \t <Policies> 
 
\t \t \t \t <TimeBasedTriggeringPolicy interval="1" modulate="true" /> 
 
\t \t \t </Policies> 
 
\t \t </RollingFile> 
 
\t </Appenders> 
 
\t <Loggers> 
 
\t \t <Root level="info"> 
 
\t \t \t <AppenderRef ref="Console" /> 
 
\t \t </Root> 
 
\t \t <Logger name="org.hkb.tryone" level="debug" additivity="false"> 
 
\t \t \t <AppenderRef ref="Console" /> 
 
\t \t </Logger> 
 
\t \t <Logger name="org.hkb.trytwo" level="info" additivity="false"> 
 
\t \t \t <AppenderRef ref="Console" /> 
 
\t \t \t <AppenderRef ref="file-gen" /> 
 
\t \t </Logger> 
 
\t </Loggers> 
 
</Configuration>

Что я здесь делаю неправильно?!

ответ

0

Я думаю, что ваш файлPattern может иметь только одну переменную% d. Если у вас их два, политика опрокидывания не может определить частоту опрокидывания.

Таким образом, вместо того, что у вас есть сейчас:

filePattern="${log-path}/%d{yyyy-MM}/demopro-%d{dd-MM-yyyy}.log.gz"> 

с этим:

filePattern="${log-path}/$${date:yyyy-MM}/demopro-%d{dd-MM-yyyy}.log.gz"> 
+0

Теперь, когда работает, но лишь частично. Теперь архивные файлы журнала создаются внутри каталога «bin» tomcat, а не в каталоге «C: \ Workspace \ Tools \ apache-tomcat-7.0.42 \ bin \ WorkspaceToolsapache-tomcat-7.0.42 \ logs», что означает, что filePattern не интерпретируется должным образом. Как я могу это преодолеть, не ставя статически указывать каталог архива? –

+0

Не означает ли это, что системное свойство 'catalina.base' указывает на каталог tomcat bin? –

+0

Это так. Но этого не происходит с активным файлом журнала. Активный файл журнала отображается в правильном каталоге внутри tomcat/log, но не в архивных файлах журналов, которые вместо этого архивируются внутри каталога tomcat/bin. –