2015-09-28 2 views
0

Есть ли способ получить свернутое имя файла? Я написал пользовательский плагин, который сигнализирует о переполнении файла, но мне нужно получить имя файла для свернутого файла. Мой плагин сигнализируется из кода Java:log4j2 свернутое имя файла

Пользовательский плагин:

@Plugin(name = "RTriggerPolicy", category = "Core", printObject = true) 
public class RTriggerPolicy implements TriggeringPolicy { 
    //... 
    @Override 
    public boolean isTriggeringEvent(LogEvent event) { 
     if (event instanceof RLogEvent) 
      return true; 
     return false; 
    } 
    //... 
} 

log4j2.xml:

<RollingFile name="appFile" fileName="${dir}app.log" append="true" filePattern="${dir}${roll}app-%d{yyyyMMddHHmmssSSS}.log"> 
    <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY" /> 
    <PatternLayout pattern="${pattern}" /> 
    <Policies> 
     <RTriggerPolicy name="app"/> 
    </Policies> 
</RollingFile> 

ответ

1

Единственный способ получить имя файла свернутый бы расширить DefaultRolloverStrategy и переопределить метод опрокидывания. Затем вы должны реализовать это как:

@Override 
public RolloverDescription rollover(final RollingFileManager manager) throws SecurityException { 
    RolloverDescription rolloverDescription = super.rollover(manager); 
    if (rolloverDescription.getSynchronous instanceof FileRenameAction) { 
     File file = ((FileRenameAction) rolloverDescription.getSynchronous()).getDestination(); 
     // Do something useful here. 
    } 
} 
Смежные вопросы