2016-08-05 1 views
0

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

016-08-05 14:44:22,635 main ERROR appender RollingFile has no parameter that matches element Delete 
2016-08-05 14:44:22.686 [WARN ] [main] Class1 - new cycle 
2016-08-05 14:44:22.691 [DEBUG] [main] Class1 - Hello this is a debug message 
2016-08-05 14:44:22.691 [INFO ] [main] Class1 - Hello this is an info message 
2016-08-05 14:44:22.692 [FATAL] [main] Class1 - Beaware This is a Fatal message 
2016-08-05 14:44:22.692 [ERROR] [main] Class1 - This is an error message 
2016-08-05 14:44:22.692 [INFO ] [main] Class2 - In constructor of class2 
2016-08-05 14:44:22.692 [INFO ] [main] Class1 - Repeating cycle 
2016-08-05 14:44:22.692 [DEBUG] [main] Class1 - Hello this is a debug message 
2016-08-05 14:44:22.692 [INFO ] [main] Class1 - Hello this is an info message 
2016-08-05 14:44:22.693 [FATAL] [main] Class1 - Beaware This is a Fatal message 
2016-08-05 14:44:22.693 [ERROR] [main] Class1 - This is an error message 

Ниже мой конфигурационный файл log4j2

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration status="warn"> 
    <Properties> 
     <Property name="log-path">D:/logs</Property> 
    </Properties> 
    <Appenders> 
     <Console name="console-log" target="SYSTEM_OUT"> 
      <PatternLayout 
       pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] [%t] %c{1} - %msg%n" /> 
     </Console> 
     <RollingFile name="file-log" fileName="${log-path}/custom-log.log" 
      filePattern="${log-path}/customelog-%d{yyyy-MM-dd HH-mm}.log"> 
      <PatternLayout> 
       <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] [%t] %c{1} - %msg%n 
       </pattern> 
      </PatternLayout> 
      <Policies> 
       <TimeBasedTriggeringPolicy interval="1" modulate="true" /> 
      </Policies> 
      <Delete basePath="${log-path}" maxDepth="2"> 
       <IfFileName glob="customelog-*.log" /> 
       <IfLastModified age="1m" /> 
      </Delete> 
     </RollingFile> 
    </Appenders> 
    <Loggers> 
     <Logger name="test.Class1" level="debug" additivity="false"> 
      <appender-ref ref="file-log" level="debug" /> 
      <appender-ref ref="console-log" level="debug" /> 
     </Logger> 
     <Root level="all" additivity="false"> 
      <AppenderRef ref="console-log" /> 
     </Root> 
    </Loggers> 
</Configuration> 

Мой тестовый код ниже

class1.java:

package test; 

import org.apache.logging.log4j.LogManager; 
import org.apache.logging.log4j.Logger; 

public class Class1 { 
    public static Logger logger = LogManager.getLogger(Class1.class); 

    public static void main(String[] args){ 
     logger.warn("new cycle"); 
     logger.debug("Hello this is a debug message"); 
     logger.info("Hello this is an info message"); 
     logger.fatal("Beaware This is a Fatal message"); 
     logger.error("This is an error message"); 

     Class2 obj = new Class2(); 

     logger.info("Repeating cycle"); 
     logger.debug("Hello this is a debug message"); 
     logger.info("Hello this is an info message"); 
     logger.fatal("Beaware This is a Fatal message"); 
     logger.error("This is an error message"); 
    } 
} 

Class2.java

package test; 

import org.apache.logging.log4j.LogManager; 
import org.apache.logging.log4j.Logger; 

public class Class2 { 
    public static Logger logger = LogManager.getLogger(Class2.class); 
    public Class2(){ 
     Class2.logger.info("In constructor of class2"); 
    } 

} 

Проблема заключается ошибка говорилось выше, и тот факт, что файлы не получают удалены, если возраст более 1 минуты

Можете ли вы, пожалуйста, дайте мне знать, что ошибка, которую я делаю из-за чего мой удалить функциональность не работает?

Я использовал следующий пример здесь Log4j2 - Configure RolloverStrategy to delete old log files

Спасибо,

Викас

ответ

2

Похоже, ваш Delete тег должен быть обернут в DefaultRolloverStrategy

например

<RollingFile name="RollingFile" fileName="D:/app.log" 
        filePattern="D:/app-%d{yyyy-MM-dd-HH-mm-ss}.log"> 
      <PatternLayout> 
       <Pattern>%d %p %c{1.} [%t] %m%n</Pattern> 
      </PatternLayout> 
      <Policies> 
       <TimeBasedTriggeringPolicy interval="60" modulate="true"/> 
       <!--<SizeBasedTriggeringPolicy size="250 MB"/>--> 
      </Policies> 
      <DefaultRolloverStrategy> 
       <Delete basePath="D:" maxDepth="1"> 
        <IfFileName glob="app-*.log" /> 
        <IfLastModified age="3m" /> 
       </Delete> 
      </DefaultRolloverStrategy> 
     </RollingFile> 
+0

Спасибо @Scary Wombat, я просто понял, что же! –

 Смежные вопросы

  • Нет связанных вопросов^_^