我目前在Linux RHEL平台上使用Log4cpp进行日志记录。
我不断记录守护程序应用程序。
我的问题是log4cpp生成的日志文件可能随时被删除(使用rm命令,logrotate等...)虽然文件被删除,但守护程序仍然打开文件描述符。 Log4cpp一直试图登录该文件,但没有添加任何内容,新的日志行将丢失,直到我手动创建一个新的日志文件。
我通过在logrotate配置中使用SIGHUP信号解决了logrotate问题,以便守护程序在每次日志轮换时重新启动log4cpp实例。但我希望有一个更聪明的方法,因为一个新用户在删除日志目录后不会向我的守护进程发送一个SIGHUP,并且很快就会注意到该守护进程没有记录。
有什么想法吗?
答案 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