如何在c ++中限制日志大小?

kar*_*hik 0 c c++ mfc visual-c++

在我的应用程序中,我正在创建大小为5kb的日志文件.如果我超过5 kb的文件大小,我必须借助新内容覆盖旧内容.

如果您有任何想法,请与我分享.

我还需要在c ++中实现这种技术

我举一些例子

最初文件看起来像这样

为sample.txt

示例应用文本示例

假设上面的示例文本文件超过5kb然后我在source.txt中添加了new,那么文件应该是这样的.

为sample.txt

新的示例应用程序文本山姆

此致,Karthik

Bjö*_*lex 5

以下是我最近为实现简单的日志文件轮换而编写的一些代码:

std::ostream & libLogging::FileRotationLogSink::GetCurrentStream( 
    std::string::size_type required )
{
    if ( static_cast<std::string::size_type>(m_CurrentStream.tellp( )) + 
        required > m_Limit ) {
        m_CurrentStream.close();
        // remove old backup
        if ( boost::filesystem::exists( m_BackupPath ) ) {
            boost::filesystem::remove( m_BackupPath );
        }
        // backup current logfile
        boost::filesystem::rename( m_LogFilePath, m_BackupPath );
        // open new logfile
        m_CurrentStream.open( m_LogFilePath );
    }
    return m_CurrentStream;
}
Run Code Online (Sandbox Code Playgroud)

required给出要写入日志的下一条消息的大小.如果文件太大,则会复制(旧备份被覆盖),并启动一个新文件.