2015-09-28 59 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. 
    } 
}