![systemd 서비스 출력 줄의 로그 수준을 표시하는 방법은 무엇입니까?](https://linux55.com/image/106831/systemd%20%EC%84%9C%EB%B9%84%EC%8A%A4%20%EC%B6%9C%EB%A0%A5%20%EC%A4%84%EC%9D%98%20%EB%A1%9C%EA%B7%B8%20%EC%88%98%EC%A4%80%EC%9D%84%20%ED%91%9C%EC%8B%9C%ED%95%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)
시스템 서비스로 실행하려는 스크립트가 있습니다.
나는 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"