向日志添加时间

Adding times to logs

本文关键字:时间 添加 日志      更新时间:2023-10-16

我正在使用SFML 1.6制作游戏,有时会出现错误,当用户运行游戏时,我不希望控制台显示,所以我将stderr(SFML显然用于记录错误)重定向到以当前日期命名的文件。因此,如果出现错误,用户只需检查日志即可。现在我还想在每个日志之前放置时间,因此日志文件将如下所示:

12:34:17 CDT
failed to load image "sprite.png"
12:35:01 CDT
failed to load file "font.ttf"

有没有办法将当前时间"固定"到任何输出上以获得上面显示的结果?

编辑

我忘了提,SFML 库是记录大多数错误的库,我想在它离开应用程序时附加时间,可以这么说。有点像收费站,除了任何离开都会提前一段时间。我知道如何将时间作为字符串获取,而且我不是调用 printf 或任何其他类似函数的人。

您可以比简单的重定向做得更好:您实际上可以在传入的字符流和写入文件之间插入自己的代码。

基本思想是从filebuf派生一个类,以控制放置的字符。

您有两种策略:

  • 简单的方法是,每次读取n字符时,您都会设置一个标志,然后在之后的第一个put插入时间戳(并取消设置标志)
  • 困难的方法是缓冲输出,直到满足n字符,此时格式化时间戳,然后刷新缓冲区(直到n

如果我们认为每行格式的开始和结束之间没有太多时间,那么简单的方法应该足够可靠地工作。

我认为压倒xsputn应该足以完成工作。

如果您可以修改执行实际打印的函数,那么是的(我建议您查找函数timectimelocaltimestrftime )。如果不能修改函数,那就不行。