시스템 서비스로 실행하려는 스크립트가 있습니다.
나는 stdout과 stderr이 systemd 로그로 라우팅된다는 것을 알고 있습니다. INFO나 ERROR 또는 적절한 것으로 처리되도록 출력 라인을 지시할 수 있는 방법이 있습니까?
답변1
~에서개발자 III를 위한 systemd: systemd의 복수우리는 다음을 발견합니다:
이 예의 인쇄 문자열은 기본 로그 우선순위 LOG_INFO로 기록됩니다.1. 때로는 인쇄된 문자열의 로그 우선순위를 변경하는 것이 유용할 수 있습니다. systemd가 서비스의 STDOUT/STDERR을 구문 분석할 때 각 줄 시작 부분의 < >에 포함된 우선 순위 값을 찾습니다.
매직 넘버는 분명히 syslog(3)
복사되었습니다.
$ egrep 'INFO|ERR' /usr/include/sys/syslog.h | fgrep define
#define LOG_ERR 3 /* error conditions */
#define LOG_INFO 6 /* informational */
#define LOG_PERROR 0x20 /* log to stderr as well */
TCL 스크립트 등에서 정보나 오류 메시지를 내보내는 것은 다음과 같습니다.
#!/usr/bin/env expect
puts "<3>auuugh"
puts "<6>infos"