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

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

我还需要在C++中实现此技术

我提供一些例子

最初文件看起来像这样

sample.txt

示例应用程序文本
样本


假设上面的示例文本文件超过5kb,然后在source.txt中添加了新的,则文件应像这样。

sample.txt

新的示例应用程序文本
sam


问候,
卡尔提克

最佳答案

这是我最近编写的用于实现简单日志文件轮换的一些代码:

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;
}
required给出要写入日志的下一条消息的大小。如果文件太大,则将其复制(覆盖旧备份),然后开始新的备份。

关于c++ - 如何限制C++中的日志大小?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5390015/

10-11 23:11
查看更多