让log4cpp在执行期间创建一个新的日志文件

时间:2014-10-07 08:55:16

标签: logging file-descriptor log4cpp

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

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

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

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

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您可以使用RollingFileAppender的log4cpp

而不是使用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