in src/main/cpp/timebasedrollingpolicy.cpp [274:339]
void TimeBasedRollingPolicy::activateOptions(log4cxx::helpers::Pool& pool)
{
// find out period from the filename pattern
if (getFileNamePattern().length() > 0)
{
parseFileNamePattern();
}
else
{
LogLog::warn(
LOG4CXX_STR("The FileNamePattern option must be set before using TimeBasedRollingPolicy. "));
throw IllegalStateException();
}
PatternConverterPtr dtc(getDatePatternConverter());
if (dtc == NULL)
{
throw IllegalStateException();
}
LogString buf;
ObjectPtr obj = std::make_shared<Date>();
formatFileName(obj, buf, pool);
m_priv->lastFileName = buf;
if( m_priv->multiprocess ){
#if LOG4CXX_HAS_MULTIPROCESS_ROLLING_FILE_APPENDER
if (getPatternConverterList().size())
{
(*(getPatternConverterList().begin()))->format(obj, m_priv->_fileNamePattern, pool);
}
else
{
m_priv->_fileNamePattern = m_priv->lastFileName;
}
if (!m_priv->_lock_file)
{
const std::string lockname = createFile(std::string(m_priv->_fileNamePattern), LOCK_FILE_SUFFIX, m_priv->_mmapPool);
apr_status_t stat = apr_file_open(&m_priv->_lock_file, lockname.c_str(), APR_CREATE | APR_READ | APR_WRITE, APR_OS_DEFAULT, m_priv->_mmapPool.getAPRPool());
if (stat != APR_SUCCESS)
{
LogLog::warn(LOG4CXX_STR("open lock file failed."));
}
}
initMMapFile(m_priv->lastFileName, m_priv->_mmapPool);
#endif
}
m_priv->suffixLength = 0;
if (m_priv->lastFileName.length() >= 3)
{
if (m_priv->lastFileName.compare(m_priv->lastFileName.length() - 3, 3, LOG4CXX_STR(".gz")) == 0)
{
m_priv->suffixLength = 3;
}
else if (m_priv->lastFileName.length() >= 4 && m_priv->lastFileName.compare(m_priv->lastFileName.length() - 4, 4, LOG4CXX_STR(".zip")) == 0)
{
m_priv->suffixLength = 4;
}
}
}