SYSLOG(3)

명칭
syslog, vsyslog, openlog, closelog, setlogmask - 시스템 로그의 제어

프로그램 라이브러리
libc

서식
<syslog.h> <varargs.h> void syslog(int priority, const char *message, ...) void vsyslog(int priority, const char *message, va_list args) void openlog(const char *ident, int logopt, int facility) void closelog(void) int setlogmask(int maskpri)

해설
syslog() 함수는, 시스템의 메세지 로가-에 메세지를 기록. 그 메세지는, 다음에 상황에 따라 시스템 콘솔, 로그 파일, 로그인한 유저 등에게 쓰기충분해 다른 머신에 전송 됩니다 ( syslogd(8) 참조)

메세지는, ‘%m’ 하지만 현재의 에러 메세지에 의해 옮겨놓을 수 있는 것을 제외하면, printf(3) 포맷 string와 같은 것이 됩니다 (글로벌 변수 errno 에 의해 나타나는 것과 같다. strerror(3) 참조) 아무것도 없는 경우는, 말미에 개행이 추가됩니다.

vsyslog() 함수는, stdarg(3) 의 가변장 인수 기능을 사용해 벌써 인수가 capther 되고 있는 경우의 대체 형식입니다.

메세지에는 우선 순위 ( priority ) 의 태그를 붙일 수 있습니다. 우선 순위는, facility (와)과 level 에 코드화 됩니다. facility (은)는, 메세지를 작성한다 시스템의 일부를 기술합니다. level (은)는, 차례로 되었다 (비싼 (분)편으로부터 낮은 (분)편에게) 다음과 같은 일람으로부터 선택합니다：

LOG_EMERG
    패닉상태. 이것은, 통상은 전유저에게 송신됩니다.

LOG_ALERT
    망가진 시스템 데이타베이스와 같은, 즉시 시정해야 할 상태.

LOG_CRIT
    위험한 상태, 예를 들면 하드 디바이스 에러 등.

LOG_ERR
    에러.

LOG_WARNING
    경고 메세지.

LOG_NOTICE
    에러 상태는 아니지만, 특별히 처리하는 필요성이 생각되는 상태.

LOG_INFO
    인포메이션 메세지.

LOG_DEBUG
    통상은 프로그램의 디버그 시에 마셔 사용하는 정보가 들어갔다 메세지.

openlog() 함수는, syslog() 및 vsyslog() 에 의해 보내진 메세지에 대해, 보다 특수한 처리를 가하기 위한 것입니다. 파라미터 ident (은)는, 모든 메세지의 전에 부가되는 string입니다. logopt 인수는, 로그 작성 옵션 (을)를 지정하는 비트 필드에서, 다음에 나타내는 값의 1 개(살) 이상을 OR 조작하는 것에 의해 작성됩니다：

LOG_CONS
    syslog() 하지만 메세지를 syslogd(8) 에 건네줄 수 없는 경우, 콘솔 (“/dev/console”) 에 메세지를 기입하는 것을 시도합니다.

LOG_NDELAY
    syslogd(8) 에의 접속을 즉시 엽니다. 통상은, 최초의 메세지가 로그에 쓰기까지는 여는 조작을 늦춥니다. 이것은, 파일 기술자를 할당하는 차례를 관리할 필요가 있는 프로그램에서는 역에 섭니다.

LOG_PERROR
    메세지를, 시스템 로그와 동시에 표준 에러 출력에도 기록.

LOG_PID
    각 메세지와 함께 프로세스 ID (을)를 로그 합니다. demon의 인스턴스화를 식별하기 위해서 도움이 됩니다.

facility 파라미터는, 명시적인 퍼실리티가 코드화되어 있지 않은 모든 메세지에 할당하는 디폴트 퍼실리티를 코드화합니다：

LOG_AUTH
    권한 부여 시스템： login(1) , su(1) , getty(8) , 등.

LOG_AUTHPRIV
    LOG_AUTH (와)과 같습니다만, 한정된 개인만이 읽을 수 있다 파일에 로그 합니다.

LOG_CONSOLE
    커널 콘솔 출력 드라이버가, 메세지를 /dev/console 에 기입합니다.

LOG_CRON
    cron demon： cron(8)

LOG_DAEMON
    routed(8) (와)과 같은, 다른 퍼실리티에서는 명시적으로 준비되어 있지 않은 시스템 demon.

LOG_FTP
    파일 전송 프로토콜 demon： ftpd(8) , tftpd(8)

LOG_KERN
    커널에 의해 생성되는 메세지. 이것들은, 어떤 사용자 프로세스에 의해도 생성할 수 없습니다.

LOG_LPR
    라인 프린터-의 스프링시스템： lpr(1) , lpc(8) , lpd(8) , 등.

LOG_MAIL
    메일 시스템.

LOG_NEWS
    네트워크 뉴스 시스템.

LOG_SECURITY
    보안 하부조직입니다. 예를 들면 ipfw(4) 입니다.

LOG_SYSLOG
    syslogd(8) 에 의해 내부적으로 생성된 메세지.

LOG_USER
    임의의 사용자 프로세스에 의해 생성된 메세지. 아무것도 지정되어 있지 않은 경우는, 이것은 디폴트의 퍼실리티 식별자가 됩니다.

LOG_UUCP
    uucp 시스템.

LOG_LOCAL0
    로컬의 사용을 위해서(때문에) 예약. LOG_LOCAL1 (으)로부터 LOG_LOCAL7 까지 붙어도 같다.

closelog() 함수는, 로그 파일을 닫기 위해서(때문에) 사용할 수가 있습니다.

setlogmask() 함수는, 로그 우선 순위 마스크를 maskpri (으)로 설정해, 이전의 마스크를 돌려줍니다. maskpri (으)로 설정되어 있지 않은 우선 순위를 가졌다 syslog() 에의 호출은 거절됩니다. 개별의 우선 순위 pri (을)를 위한 마스크는, 매크로 LOG_MASK(pri) 에 의해 계산됩니다. toppri 자체를 포함한다 toppri 까지의 모든 우선 순위에 대한 마스크는, 매크로 LOG_UPTO(toppri) 에 의해 주어집니다. 디폴트에서는, 모든 우선 순위를 로그 하는 것을 허가합니다.

반환값
routine closelog() , openlog() , syslog() , 및 vsyslog() (은)는, 값을 돌려주지 않습니다.

routine setlogmask() (은)는, 항상 전의 로그 마스크 레벨을 돌려줍니다.

예

    syslog(LOG_ALERT, "who: internal error 23");
    openlog("ftpd", LOG_PID | LOG_NDELAY, LOG_FTP);
    setlogmask(LOG_UPTO(LOG_ERR));
    syslog(LOG_INFO, "Connection from host %d", CallingHost);
    syslog(LOG_INFO|LOG_LOCAL2, "foobar error: %m");

참조
logger(1), syslogd(8)

역사
이러한 함수는 4.2BSD 에 나타났습니다.