systemd로 logrotate하는 방법? 지워집니다 (디버깅에 필요함). 어떻게

unitd 파일과 함께 systemd를 사용하여 노드 앱을 실행 중입니다. 앱 로그를 사용하여 볼 수 journalctl -u example.com있지만 어느 시점에서 로그가 잘려서 히스토리가 지워집니다 (디버깅에 필요함).

어떻게 내 응용 프로그램 로그에 저장됩니다 너무 systemd와 회전을 로그 구성해야합니까 example.com.log.1, example.com.log.2내가 내 응용 프로그램의 역사를 조회 할 수 있도록 등?

이것은 내 단위 파일입니다.

ExecStart=/usr/bin/node keystone.js
#Restart=always
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=example.com
User=user
Group=user
Environment=NODE_ENV=production

[Install]
WantedBy=multi-user.target


답변

스토리지 증가

디스크에 저장하는 경우 SystemMaxUse및 / 또는를 변경 하여 사용되는 공간을 늘릴 수 있습니다 SystemKeepFree. 더 많은 공간이 있으면 더 많은 항목을 저장할 수 있습니다.

기본적으로 최대 사용 제한 ( SystemMaxUse)은 파일 시스템의 10 %이며 최소 여유 공간 ( SystemKeepFree) 값은 15 %입니다. 둘 다 4G로 제한되어 있습니다.

저널 로테이션

저널은 SystemMaxFileSize값에 도달하면 자동으로 회전해야하며 저널 수는에 의해 제어됩니다 SystemMaxFiles. 시간 기반 회전을 원하는 경우 a MaxFileSec를 설정하여 최대 저널 항목이 최대 저널에 저장되는 시간을 설정할 수 있습니다 .

저장 위치 / 유형에 대한 참고 사항

저널링을 사용하면 저널 항목을 메모리 ( Storage=volatile) 또는 디스크 ( Storage=persistent) 에 저장하도록 선택할 수 있습니다 . 위의 설명은 저널을 디스크에 저장한다고 가정합니다. 그렇지 않은 경우 위의 변수에서 “시스템”을 “런타임”으로 바꾸어야합니다.

자세한 내용은에서 확인할 수 있습니다 man journald.conf.

대안-분개 전달

기존 SYSLOG 디먼에 이미 익숙한 경우 ForwardToSyslog옵션 을 설정하여 ( 이벤트를 즉시 전달) 저널 이벤트 를 전달하거나 syslog 디먼이 저널 클라이언트처럼 작동하도록하고 로그 자체를 페치 할 수 있습니다.