感谢您的时间,并对此长信息表示歉意!在您的软件中写入日志以处理可能的大量日志消息的策略是什么?
我的工作环境
Linux下C/C++(但我是新来的Linux平台)
我简要
在我工作的软件问题,我们写很多的日志消息到本地文件这使得文件的大小增长很快,最后用尽所有磁盘空间(哎!!)。我们希望这些日志消息用于故障排除目的,特别是在软件发布到客户现场之后。我认为当然不能接受客户电脑的所有磁盘空间,,但我不知道如何处理这个。所以我想知道如果有人在这里有什么好主意。更多信息在下面。
我不是问的
1)。我是不是要求推荐的C++日志库。我们自己写了一个记录器。 2)。我是不是询问应该在日志消息中写入什么细节(如时间戳,线程ID,函数名等)。一些建议可以发现here。
我在我的软件
我单独的日志消息已经做分为3类:
SYSTEM:只有登录我的软件的重要步骤。示例:对我的软件的接口方法的外部调用。背后的想法是从这些消息中我们可以看到软件中通常发生的事情。有并不是很多这样的消息。
错误:只记录错误情况,例如找不到ID。通常有并不是很多这样的消息。
信息:记录我的软件内部运行的详细步骤。例如,当调用接口方法时,如上所述写入SYSTEM日志消息,并且在接口方法内的整个调用例程到内部模块中将被记录INFO消息。背后的想法是这些消息可以帮助我们确定详细的调用堆栈,以便进行故障排除或调试。这是使用磁盘空间问题的来源:当软件正常运行时,始终有INFO消息。
我的尝试和思考
1)。 我试图不记录任何INFO日志消息。这解决了磁盘空间问题,但我也失去了大量调试信息。想想这个:我的客户位于不同的城市,经常去那里很贵。此外,他们使用外部100%无法访问的内部网。因此:只要遇到问题,我们不能总是派工程师到现场;我们无法启动远程调试会话。因此,我认为日志文件是我们可以用来找出问题根源的唯一方法。 2)。 也许我可以做日志策略在运行时(目前它的软件运行之前)配置,即:在正常运行时,该软件只记录系统日志和错误日志;当出现问题时,有人可以更改日志记录配置,以便可以记录INFO消息。但仍然:谁可以在运行时更改配置?也许我们应该教育软件管理员? 3)。 也许我总是可以打开INFO消息登录,但将日志文件定期打包到压缩包中?嗯......
最后...
什么是你在你的项目/工作经验?任何想法/想法/评论都欢迎!
编辑
感谢您的努力!这里的关键点从下面所有的答复摘要(我给他们一试):
1)。不要使用大型日志文件。使用相对较小的。 2)。定期处理最旧的(可以删除它们或将其压缩到更大的存储空间)。 3)。实施运行时可配置的日志记录策略。
用于对数轮转,请参阅http://linux.about.com/od/commands/l/blcmdl8_logrota.htm – stefaanv 2012-03-06 12:27:48