日志轮换:应用程序不写入截断的新日志文件

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (35)

我相信你们都做得很好。

我们计划为下面的文件实现日志轮换。 stdout.log

我们使用下面的日志轮换配置文件。

/usr/local/rms/kafka/kafka-connect-fluentd/stdout.log {
    daily
    rotate 7
    maxsize 100M
    minsize 10M
    copytruncate
    delaycompress
    compress
    notifempty
    missingok
}

我们注意到文件正在旋转,文件被截断。但是应用程序不会将日志写入新文件。我们试图发送HUP信号但它没有用。

-rw-r--r-- 1 appuser appuser 8.2M Feb 20 03:11 stdout.log.4.gz
-rw-r--r-- 1 appuser appuser 4.0M Feb 20 23:48 stdout.log.3.gz
-rw-r--r-- 1 appuser appuser 7.6M Feb 20 23:49 stdout.log.2.gz
-rw-r--r-- 1 appuser appuser 2.1G Feb 21 03:39 stdout.log.1
-rw-r--r-- 1 appuser appuser 2.2G Feb 21 14:15 stdout.log

应用程序本身没有重新加载选项。当我们需要重新加载或重新启动应用程序时,我们停止应用程序并启动应用程序。

我们使用下面的命令调出应用程序

nohup connect-standalone ${BASE}/connect-standalone.properties 
${BASE}/FluentdSourceConnector.properties >& ${BASE}/stdout.log &

我们使用下面的命令来杀死应用程序

kill -9 <processid>

我们如何为这种情况实施日志轮换机制?

提问于
用户回答回答于
>& FILE

过时的语法:

> FILE 2>&1

> FILE 重定向命令的标准输出到文件命名FILE。但是,在此之前,“如果文件不存在则创建它;如果它确实存在则将其截断为零大小”。

因此,每次重新启动命令时,shell都会(正确)截断您的文件。你想要的是附加到文件。通过使用>>重定向来做到这一点。包括你想要重定向stdout和stderr,使用:

2>&1 >>FILE

2>&1stderr重定向到标准输出和>>FILE附加标准输出到FILE

所属标签

可能回答问题的人

  • uncle_light

    5 粉丝518 提问7 回答
  • 学生

    3 粉丝476 提问7 回答
  • o o

    4 粉丝494 提问5 回答
  • 富有想象力的人

    3 粉丝0 提问5 回答

扫码关注云+社区

领取腾讯云代金券