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

标签 c++ c visual-c++ mfc

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

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

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

举个例子

最初文件看起来像这样

样本.txt

示例应用程序文本 示例

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

样本.txt

新示例应用程序文本 山姆

问候, 卡尔提克

最佳答案

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

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/

相关文章:

c++ - 创建进程并在进程返回消息后运行代码(C++)

c++ - 在单独的线程中加载库

c - C 中的嵌套 for 循环

c++ - 用另一个文件替换一个文件,但保持文件同名。

c++ - 为什么在需要数组删除运算符时常规删除运算符起作用?

c++ - 增加优先级队列中的优先级

c++ - vector<double> 的哈希函数

PHP 扩展错误 :

c++ - 使用 `size_t` 而不是使用 `int` 的二分搜索算法

multithreading - WaitForSingleObject 超时=0