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 디먼이 저널 클라이언트처럼 작동하도록하고 로그 자체를 페치 할 수 있습니다.