自定义日志记录,用于在Linux上的C应用程序的DEBUG模式下执行

时间:2016-09-23 14:41:06

标签: c linux logging syslog

我想了解如何在linux上开发一个应用程序(只有C),这样我就可以在调试模式执行时获得为它生成的日志文件。 Syslog是一个守护进程,我们的应用程序记录到它的日志消息与其他消息混合在一起。我想要一个自定义日志文件(只是与系统日志不同的日志,但特定于此应用程序,每次都可以是同一个文件,每次执行都可以是不同的文件)。

我特意要求DEBUG模式缩小问题范围,但理想情况下我想实现3种执行模式:启用LOG模式(不调试),禁用LOG模式(不调试模式),DEBUG模式(日志将在默认情况下这种模式。)

1 个答案:

答案 0 :(得分:0)

如果你正在寻找它,那么没有库接口。

您的应用需要打开日志文件本身,然后您可以定义一组功能,以记录为“错误”,“警告”,“信息”,“调试”等。

您还需要一些定期滚动日志文件的方法。

如果要使用基于大小的滚动,可以使用fprintf打印到日志,然后捕获返回值以获取写入的字节数。然后,您可以将该值添加到计数器,并查看是否已达到大小阈值。如果您想要基于日期的滚动,您可以设置下一次滚动的时间,然后检查当前时间是否在该时间之后。

当达到滚动条件时,然后关闭当前日志文件,重命名该文件(如果需要,还可以重命名旧文件),然后打开新的日志文件。

要保留一定数量的文件,我们说n个日志文件,先删除logfile.n,然后将logfile.n-1重命名为logfile.n,将logfile.n-2重命名为{ {1}}等等,直到您转到从logfile.n-1重命名为logfile的最新文件。

对于基于日期的滚动,您只需要将最新的日志文件从logfile.1重命名为logfile,如果您想要每日滚动,logfile.YYYYMMDD如果您想要每小时滚动,等等