我目前在 Linux RHEL 平台上使用 Log4cpp 进行日志记录。
我不断地记录守护程序应用程序。
我的问题是 log4cpp 生成的日志文件可能随时被删除(使用 rm 命令、logrotate 等...),尽管文件被删除,但文件描述符仍然由守护进程打开。 Log4cpp 不断尝试登录该文件,但没有添加任何内容,新的日志行会丢失,直到我手动创建新的日志文件。
我通过在 logrotate 配置中使用 SIGHUP 信号解决了 logrotate 问题,以便守护进程在每次日志轮转时重新启动 log4cpp 实例。但我希望有一种更聪明的方法,因为新用户在清除日志目录后不会向我的守护进程发送 SIGHUP,并且稍后会注意到守护进程没有记录日志。
有什么想法吗?
最佳答案
您可以使用 RollingFileAppender 而不是使用 logrotate 来更改输出文件。 log4cpp的
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
关于logging - 让 log4cpp 在执行期间创建一个新的日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26232217/