bool Gatekeeper::SetLogFilename(
const PString& filename
)
{
if (filename.IsEmpty())
return false;
PWaitAndSignal lock(m_logFileMutex);
if (!m_logFilename && m_logFile != NULL && m_logFile->IsOpen()
&& m_logFilename == filename)
return true;
if (m_logFile) {
PTRACE(1, "GK Logging redirected to the file '" << filename << ''');
EnableLogFileRotation(false);
}
PTrace::SetStream(&cerr);
#ifndef hasDeletingSetStream
delete m_logFile;
#endif
m_logFile = NULL;
m_logFilename = filename;
m_logFile = new PTextFile(m_logFilename, PFile::WriteOnly, PFile::Create);
if (!m_logFile->IsOpen()) {
delete m_logFile;
m_logFile = NULL;
return false;
}
m_logFile->SetPosition(0, PFile::End);
PTrace::SetStream(m_logFile);
return true;
}

这段代码展示了在GnuGK中如何使用ptlib库来设置和切换日志文件。当指定的文件名不为空时,它会关闭当前打开的日志文件(如果有的话),创建新的日志文件,并设置日志流指向新的文件。同时,还包含了日志文件旋转功能的禁用和文件定位到末尾的操作。

1010

被折叠的 条评论
为什么被折叠?



