![syslog가 소유한 로그 파일의 데이터를 자동으로 새로 고치는 방법은 무엇입니까?](https://linux55.com/image/11281/syslog%EA%B0%80%20%EC%86%8C%EC%9C%A0%ED%95%9C%20%EB%A1%9C%EA%B7%B8%20%ED%8C%8C%EC%9D%BC%EC%9D%98%20%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A5%BC%20%EC%9E%90%EB%8F%99%EC%9C%BC%EB%A1%9C%20%EC%83%88%EB%A1%9C%20%EA%B3%A0%EC%B9%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
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
그 후 서비스를 다시 시작했습니다. 나를 위한 로그 파일이 생성됩니다. 로그 파일에 대해 다음과 같은 두 가지 질문이 있습니다.
- 이제 15일마다 모든 로그 파일 데이터를 새로 고쳐야 합니다. 이를 수행할 수 있는 방법이 있습니까?
- 일부 API는 3분마다 응답하는데, 특정 API의 로그 생성을 제한할 수 있는 방법이 있습니까?
나는 이 모든 작업을 수행하기 위해 systemd를 사용하고 있습니다. systemd 서비스에 첨부된 로그 파일을 생성하는 방법이 있으면 제안해 주십시오.
답변1
- 로그를 플러시하려면 표준 logrotate를 사용하고 postrotate 스크립트에서 rsyslog를 다시 로드할 수 있습니다.매뉴얼 페이지
- 보시다시피. Systemd는 모든 표준 출력을 syslog에 기록하므로 stdout으로 이동해야 할 API와 이동하지 말아야 할 API를 필터링하는 작업은 애플리케이션 내에서 수행되어야 합니다.