syslog — Unix syslog 라이브러리 루틴

syslog — Unix syslog 라이브러리 루틴

이 모듈은 Unix syslog 라이브러리 루틴에 대한 인터페이스를 제공해요. syslog 기능(functionality)에 대한 자세한 설명은 Unix 매뉴얼 페이지를 참고하세요.

가용성: Unix, WASI·iOS 아님.

이 모듈은 시스템의 syslog 계열 루틴을 감싸요. syslog 서버와 순수 파이썬으로 대화할 수 있는 라이브러리는 logging.handlers 모듈의 SysLogHandler로 제공되고 있어요.

출처: Python 표준 라이브러리

본문

모듈은 다음 함수들을 정의해요.

slog.syslog(message) / syslog.syslog(priority, message) — 문자열 message를 시스템 로거로 보내요. 필요하면 끝에 개행이 추가되죠. 각 메시지는 facility(설비)와 level로 구성된 priority(우선순위)로 태그가 붙어요. 기본값이 LOG_INFO인 선택적 priority 인자가 메시지의 우선순위를 결정해요. 만약 priority에 facility가 논리합(LOG_INFO | LOG_USER)으로 인코딩되어 있지 않으면, openlog() 호출 때 주어진 값을 사용해요.

syslog()를 호출하기 전에 openlog()가 호출되지 않았다면, 인자 없이 openlog()가 호출돼요.

이 함수는 인자 priority, message로 감사 이벤트 syslog.syslog를 발생시켜요.

버전 3.2에서 변경: 이전 버전에서는 syslog() 호출 전에 openlog()가 호출되지 않았다면 자동으로 호출되지 않고, syslog 구현이 openlog()를 호출하도록 맡겼어요.

버전 3.12에서 변경: 이 함수는 서브인터프리터에서 제한됨. (여러 인터프리터에서 실행되는 코드만 영향받고, 대부분의 사용자에게는 관련이 없어요.) 서브인터프리터에서 syslog()를 쓰기 전에 메인 인터프리터에서 openlog()를 호출해야 해요. 그렇지 않으면 RuntimeError를 발생시켜요.

syslog.openlog([ident[, logoption[, facility]]]) — 이후 syslog() 호출의 로깅 옵션은 openlog()를 호출해서 설정할 수 있어요. 로그가 현재 열려 있지 않으면 syslog()가 인자 없이 openlog()를 호출해요.

선택적 ident 키워드 인자는 모든 메시지 앞에 붙는 문자열로, 기본값은 앞쪽 경로 구성 요소를 뗀 sys.argv[0]이에요. 선택적 logoption 키워드 인자(기본값 0)는 비트 필드예요 — 결합할 수 있는 값은 아래를 보세요. 선택적 facility 키워드 인자(기본값 LOG_USER)는 facility가 명시적으로 인코딩되지 않은 메시지의 기본 facility를 설정해요.

이 함수는 인자 ident, logoption, facility로 감사 이벤트 syslog.openlog를 발생시켜요.

버전 3.2에서 변경: 이전 버전에서는 키워드 인자가 허용되지 않았고, ident가 필수였어요.

버전 3.12에서 변경: 이 함수는 서브인터프리터에서 제한됨. 메인 인터프리터에서만 호출할 수 있고, 서브인터프리터에서 호출하면 RuntimeError를 발생시켜요.

syslog.closelog() — syslog 모듈 값을 초기화하고 시스템 라이브러리 closelog()를 호출해요. 그 결과 모듈은 처음 임포트했을 때처럼 동작해요. 예를 들어 첫 syslog() 호출 때(아직 openlog()가 호출되지 않았다면) openlog()가 호출되고, ident 및 다른 openlog() 파라미터가 기본값으로 리셋돼요.

이 함수는 인자 없이 감사 이벤트 syslog.closelog를 발생시켜요.

버전 3.12에서 변경: 이 함수는 서브인터프리터에서 제한됨. 메인 인터프리터에서만 호출할 수 있고, 서브인터프리터에서 호출하면 RuntimeError를 발생시켜요.

syslog.setlogmask(maskpri) — priority 마스크를 maskpri로 설정하고 이전 마스크 값을 반환해요. maskpri에 설정되지 않은 priority 레벨로 syslog()를 호출하면 무시돼요. 기본값은 모든 우선순위를 기록하는 거예요. LOG_MASK(pri) 함수는 개별 우선순위 pri에 대한 마스크를 계산하고, LOG_UPTO(pri) 함수는 pri까지(포함) 모든 우선순위에 대한 마스크를 계산해요.

이 함수는 인자 maskpri로 감사 이벤트 syslog.setlogmask를 발생시켜요.

상수들

우선순위 레벨(높은 것부터 낮은 것):

  • syslog.LOG_EMERG, syslog.LOG_ALERT, syslog.LOG_CRIT, syslog.LOG_ERR, syslog.LOG_WARNING, syslog.LOG_NOTICE, syslog.LOG_INFO, syslog.LOG_DEBUG

Facility(설비) — <syslog.h>에서의 가용성에 따라 LOG_AUTHPRIV, LOG_FTP, LOG_NETINFO, LOG_REMOTEAUTH, LOG_INSTALL, LOG_RAS 포함:

  • syslog.LOG_AUTH, syslog.LOG_AUTHPRIV, syslog.LOG_CRON, syslog.LOG_DAEMON, syslog.LOG_FTP, syslog.LOG_INSTALL, syslog.LOG_KERN, syslog.LOG_LAUNCHD, syslog.LOG_LPR, syslog.LOG_MAIL, syslog.LOG_NETINFO, syslog.LOG_NEWS, syslog.LOG_RAS, syslog.LOG_REMOTEAUTH, syslog.LOG_SYSLOG, syslog.LOG_USER, syslog.LOG_UUCP, syslog.LOG_LOCAL0syslog.LOG_LOCAL7

버전 3.13에서 변경: LOG_FTP, LOG_NETINFO, LOG_REMOTEAUTH, LOG_INSTALL, LOG_RAS, LOG_LAUNCHD가 추가됨.

로그 옵션 — <syslog.h>에서의 가용성에 따라 LOG_ODELAY, LOG_NOWAIT, LOG_PERROR 포함:

  • syslog.LOG_PID, syslog.LOG_CONS, syslog.LOG_NDELAY, syslog.LOG_ODELAY, syslog.LOG_NOWAIT, syslog.LOG_PERROR

예제

간단한 예제들이에요.

import syslog

syslog.syslog('Processing started')
if error:
    syslog.syslog(syslog.LOG_ERR, 'Processing started')

몇 가지 로그 옵션을 설정하는 예를 보면, 로그 메시지에 프로세스 ID를 포함하고 메일 로깅에 쓰이는 대상 facility로 메시지를 써요.

syslog.openlog(logoption=syslog.LOG_PID, facility=syslog.LOG_MAIL)
syslog.syslog('E-mail processing initiated...')