Manpages

이 름

syslog − 커 널 메 시 지 링 버 퍼 를 읽 거 나 소 거 한 다 ; console_loglevel을 설 정 한 다 .

사 용 법

#include <unistd.h>

#include <linux/unistd.h>

_syscall3(int, syslog, int, type, char *, bufp, int, len);

int syslog(int type, char *bufp, int len);

설 명

이 것 은 아 마 도 당 신 이 흥 미 를 가 질 만 한 기 능 은 아 니 다 . C라 이 브 러 리 인 터 페 이 스 를 위 해 syslog(3) 를 본 다 . 이 페 이 지 는 단 지 텅 빈 커 널 시 스 템 호 출 인 터 페 이 스 를 문 서 화 했 다 .

type인 수 는 syslog 에 의 한 실 행 을 결 정 한 다 .

kernel/printk.c 로 부 터 인 용 :
/*
* Commands to sys_syslog:
*
* 0 -- Close the log. Currently a NOP.
* 1 -- Open the log. Currently a NOP.
* 2 -- Read from the log.
* 3 -- Read up to the last 4k of messages in the ring buffer.
* 4 -- Read and clear last 4k of messages in the ring buffer
* 5 -- Clear ring buffer.
* 6 -- Disable printk’s to console
* 7 -- Enable printk’s to console
* 8 -- Set level of messages printed to console
*/

기 능 3은 비 root 프 로 세 스 만 을 허 용 한 다 .

커 널 로 그 버 퍼
커 널 은 메 시 지 가 커 널 함 수 printk()/fh 인 수 로 써 주 어 지 는 것 이 저 장 된 LOG_BUF_LEN (4096, since 1.3.54: 8192, since 2.1.113: 16384)의 순 환 버 퍼 를 갖 는 다 .

호 출 syslog (2,buf,len) 는 이 커 널 로 그 버 퍼 가 비 워 지 지 않 을 때 까 지 대 기 한 후 대 부 분 의 len바 이 트 에 서 버 퍼 buf를 읽 는 다 . 그 것 은 읽 어 들 인 바 이 트 양 을 반 환 한 다 . 로 그 에 서 읽 은 바 이 트 는 로 그 버 퍼 로 부 터 사 라 진 다 : 정 보 는 한 번 만 읽 을 수 있 다 . 이 것 은 사 용 자 프 로 그 램 이 /proc/kmsg 를 읽 을 때 커 널 에 의 해 실 행 된 함 수 이 다 .

호 출 syslog (3,buf,len) 는 로 그 버 퍼 로 부 터 마 지 막 len 바 이 트 를 읽 지 만 , 버 퍼 에 기 록 된 이 상 은 읽 지 는 못 할 것 이 다 .

호 출 syslog (4,buf,len) 도 같 다 .

호 출 syslog (5,dummy,idummy) 는 단 지 ’clear ring buffer’ 명 령 을 실 행 한 다 .

메 세 지 의 모 든 텍 스 트 행 은 로 그 레 벨 이 있 다 . 이 레 벨 은 d가 1-7범 위 안 의 <d>를 가 진 시 작 행 이 아 니 라 면 DEFAULT_MESSAGE_LOGLEVEL - 1 (6)이 다 . 로 그 레 벨 의 전 통 적 의 미 는 다 음 과 같 이 <linux/kernel.h> 에 정 의 되 어 있 다 :

#define KERN_EMERG "<0>" /* system is unusable */
#define KERN_ALERT "<1>" /* action must be taken immediately */
#define KERN_CRIT "<2>" /* critical conditions */
#define KERN_ERR "<3>" /* error conditions */
#define KERN_WARNING "<4>" /* warning conditions */
#define KERN_NOTICE "<5>" /* normal but significant condition */
#define KERN_INFO "<6>" /* informational */
#define KERN_DEBUG "<7>" /* debug-level messages */

반 환 값

에 러 시 , -1이 반 환 되 고 , errno가 설 정 된 다 . 그 렇 지 않 으 면 2,3,4와 같 은 형 태 를 위 해 syslog()는 읽 은 바 이 트 수 를 반 환 하 고 , 그 렇 지 않 으 면 0이 다 .

에 러

EPERM

시 도 는 console_loglevel을 바 꾸 거 나 root권 한 이 없 는 프 로 세 스 에 의 해 커 널 메 세 지 링 버 퍼 를 소 거 한 다 .

EINVAL

잘 못 된 배 개 변 수 .

ERESTARTSYS

시 스 템 호 출 은 아 무 것 도 읽 지 못 하 는 시 그 널 에 의 해 중 단 된 다 .

호 환

이 시 스 템 호 출 은 리 눅 스 에 특 화 되 었 다 . 그 리 고 다 른 프 로 그 램 에 서 는 쓰 여 지 지 않 는 다 .

관 련 항 목

syslog(3)