在我的应用程序中,我正在创建大小为 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/