我有一个有两个子模块的应用程序。另外,他们是自定义Log类写入日志模块活动。我正在处理的是每个模块应该创建具有相同名称的日志文件并将日志写入其中。为了解释它更好地考虑初始运行,其中module1正在app.log中记录日志当另一个应用程序会话以module2启动时,它还应该创建app.log并开始编写。但在此之前,旧的app.log应该重命名为app.log.1。
问题我正在面对日志文件打开时,一个模块函数无法重命名。我在窗口7上使用C ++。要创建我正在使用的文件 - std :: ofstream s_ofs.open(“app.log”,std :: ios :: out | std :: ios :: app);
答案 0 :(得分:2)
Windows不允许这样做。当您打开文件时,为了编写或进行阅读,它已被锁定,您无法在文件打开时执行重命名或删除等操作。
您可能想重新考虑您的设计。要么每个子模块都有自己的唯一命名日志文件。或者使用可以从多个源接收日志记录输入的日志记录模块,并将这些日志文件多路复用到一个文件中。
答案 1 :(得分:1)
您可以通过同步对Log类对象的访问来实现此目的。方法可以如下: