2

我目前在 Linux RHEL 平台上使用 Log4cpp 进行日志记录。

我不断记录一个守护程序应用程序。

我的问题是 log4cpp 生成的日志文件可能随时被删除(使用 rm 命令、logrotate 等),虽然文件被删除,但文件描述符仍然由守护进程打开。Log4cpp 不断尝试登录该文件,但没有添加任何内容,新的日志行会丢失,直到我手动创建一个新的日志文件。

我通过在 logrotate 配置中使用 SIGHUP 信号解决了 logrotate 问题,以便守护程序在每次日志轮换时重新启动 log4cpp 实例。但我希望有一个更聪明的方法,因为新用户在刷出日志目录后不会向我的守护进程发送 SIGHUP,并且稍后会注意到守护进程没有记录。

有任何想法吗 ?

4

1 回答 1

3

您可以使用log4cpp的RollingFileAppender而不是使用 logrotate 来更改输出文件

一个例子log4cpp.properties可能是:

log4cpp.rootCategory=DEBUG, rolling
log4cpp.appender.rolling=RollingFileAppender
log4cpp.appender.rolling.maxFileSize=1048576
log4cpp.appender.rolling.maxBackupIndex=5
log4cpp.appender.rolling.fileName=output.log 
log4cpp.appender.rolling.layout=PatternLayout 
log4cpp.appender.rolling.layout.ConversionPattern=%d [%p] - %m%n
于 2014-11-08T21:04:36.877 回答