openrc 및 logrotate를 사용하면 Alpine Linux에서 로깅 작동이 중지됩니다.

openrc 및 logrotate를 사용하면 Alpine Linux에서 로깅 작동이 중지됩니다.

나는 로그 데이터를 stdout으로 출력하도록 작성한 Go 애플리케이션을 실행하기 위해 매우 간단한 openrc 서비스를 사용하고 있으며 logrorate애플리케이션의 로그 파일을 활성화할 때까지 애플리케이션은 정상적으로 실행되었습니다. 로그를 회전시키는 것처럼 보이지만 로그 파일이 잘린 후 특정 지점이 지나면 내 Go 애플리케이션이 파일에 대한 로깅을 완전히 중지합니다. 서비스를 다시 시작하면 다시 작동하는 것 같습니다.

내 openrc 서비스 파일:

#!/sbin/openrc-run

name="My Server"
description="My Server Written in Go"
command="/usr/bin/server"
command_args="/etc/${RC_SVCNAME}/${RC_SVCNAME}.conf"
pidfile="/var/run/${RC_SVCNAME}.pid"
command_background="yes"
output_log="/var/log/${RC_SVCNAME}/${RC_SVCNAME}.log"
error_log="/var/log/${RC_SVCNAME}/${RC_SVCNAME}.log"


depend() {
    use net localmount logger dns
        need net
        after keepalived firewall
}

start_pre() {
    checkpath --directory /etc/${RC_SVCNAME}
}

logrotate구성.

/var/log/server/*.log {
    daily
    missingok
    notifempty
}

로그 회전을 인식하도록 애플리케이션에 어떤 조치를 취해야 합니까?

답변1

나는 logrotate 전문가는 아니지만 다음과 같이 logrotate에 서비스를 다시 시작하도록 지시할 수 있습니다.

/var/log/server/*.log {
    daily
    missingok
    notifempty

    postrotate
        /etc/init.d/server --quiet --ifstarted restart || true
    endscript
}

관련 정보