基于ptlib创建日志文件的例子

来源:互联网 发布:知乎推送 编辑:程序博客网 时间:2024/05/22 05:22
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"GKLogging 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中的一段源码,包括了文件的创建。
原创粉丝点击