syslog가 소유한 로그 파일의 데이터를 자동으로 새로 고치는 방법은 무엇입니까?

syslog가 소유한 로그 파일의 데이터를 자동으로 새로 고치는 방법은 무엇입니까?

Go 바이너리를 서비스로 실행하고 모든 로그를 유지 관리하기 위해 syslog 소유 로그 파일을 만들었습니다.

이것은 내 서비스 파일입니다::

[Unit]
Description=myapp

[Service]
Type=simple
Restart=always
RestartSec=30
WorkingDirectory= /home/go/src/myapp
ExecStart=/home/go/src/myapp/myapp  

# myapp.log owned by syslog
PermissionsStartOnly=true
ExecStartPre=/bin/mkdir -p /var/log/myapp
ExecStartPre=/bin/chown syslog:adm /var/log/myapp
ExecStartPre=/bin/chmod 755 /var/log/myapp
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=myapp                           

[Install]
WantedBy=multi-user.target

그런 다음 rsyslog를 사용하여 시스템 로그를 관리하고 /etc/rsyslog.d/myapp.conf에 다음 내용이 포함된 파일을 생성합니다.

if $programname == 'myapp' then /var/log/myapp/myapp.log
& stop

그 후 서비스를 다시 시작했습니다. 나를 위한 로그 파일이 생성됩니다. 로그 파일에 대해 다음과 같은 두 가지 질문이 있습니다.

  1. 이제 15일마다 모든 로그 파일 데이터를 새로 고쳐야 합니다. 이를 수행할 수 있는 방법이 있습니까?
  2. 일부 API는 3분마다 응답하는데, 특정 API의 로그 생성을 제한할 수 있는 방법이 있습니까?

나는 이 모든 작업을 수행하기 위해 systemd를 사용하고 있습니다. systemd 서비스에 첨부된 로그 파일을 생성하는 방법이 있으면 제안해 주십시오.

답변1

  1. 로그를 플러시하려면 표준 logrotate를 사용하고 postrotate 스크립트에서 rsyslog를 다시 로드할 수 있습니다.매뉴얼 페이지
  2. 보시다시피. Systemd는 모든 표준 출력을 syslog에 기록하므로 stdout으로 이동해야 할 API와 이동하지 말아야 할 API를 필터링하는 작업은 애플리케이션 내에서 수행되어야 합니다.

관련 정보