log4j2 滚动文件名
log4j2 rolled file name
有没有办法获取滚动文件名?我编写了自定义插件来指示文件滚动,但我需要获取滚动文件的文件名。我的插件由 java 代码发出信号:
自定义插件:
@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>
获取滚动文件名的唯一方法是扩展 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.
}
}
有没有办法获取滚动文件名?我编写了自定义插件来指示文件滚动,但我需要获取滚动文件的文件名。我的插件由 java 代码发出信号:
自定义插件:
@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>
获取滚动文件名的唯一方法是扩展 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.
}
}