in src/main/cpp/fixedwindowrollingpolicy.cpp [160:229]
RolloverDescriptionPtr FixedWindowRollingPolicy::rollover(
const LogString& currentActiveFile,
const bool append,
Pool& pool)
{
RolloverDescriptionPtr desc;
if (priv->maxIndex < 0)
{
return desc;
}
int purgeStart = priv->minIndex;
if (!priv->explicitActiveFile)
{
purgeStart++;
}
if (!purge(purgeStart, priv->maxIndex, pool))
{
return desc;
}
LogString buf;
ObjectPtr obj = std::make_shared<Integer>(purgeStart);
formatFileName(obj, buf, pool);
LogString renameTo(buf);
LogString compressedName(renameTo);
ActionPtr compressAction ;
if(getCreateIntermediateDirectories()){
File compressedFile(compressedName);
File compressedParent (compressedFile.getParent(pool));
compressedParent.mkdirs(pool);
}
if (StringHelper::endsWith(renameTo, LOG4CXX_STR(".gz")))
{
renameTo.resize(renameTo.size() - 3);
GZCompressActionPtr comp = std::make_shared<GZCompressAction>(
File().setPath(renameTo),
File().setPath(compressedName),
true);
comp->setThrowIOExceptionOnForkFailure(priv->throwIOExceptionOnForkFailure);
compressAction = comp;
}
else if (StringHelper::endsWith(renameTo, LOG4CXX_STR(".zip")))
{
renameTo.resize(renameTo.size() - 4);
ZipCompressActionPtr comp = std::make_shared<ZipCompressAction>(
File().setPath(renameTo),
File().setPath(compressedName),
true);
comp->setThrowIOExceptionOnForkFailure(priv->throwIOExceptionOnForkFailure);
compressAction = comp;
}
auto renameAction = std::make_shared<FileRenameAction>(
File().setPath(currentActiveFile),
File().setPath(renameTo),
false);
desc = std::make_shared<RolloverDescription>(
currentActiveFile, append,
renameAction, compressAction);
return desc;
}