systemd 서비스 출력 줄의 로그 수준을 표시하는 방법은 무엇입니까?

systemd 서비스 출력 줄의 로그 수준을 표시하는 방법은 무엇입니까?

시스템 서비스로 실행하려는 스크립트가 있습니다.

나는 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"

관련 정보