(L) ubuntu 12.04 syslog를 사용자 정의 파일로 (/var/log/syslog가 아니라 /var/log/mylog) - ubuntu 12.04

(L) ubuntu 12.04 syslog를 사용자 정의 파일로 (/var/log/syslog가 아니라 /var/log/mylog) - ubuntu 12.04

우분투 12.04에서 다음 syslog "hello world" 예제를 성공적으로 테스트했습니다.

// gcc giuspexample.c -o giuspexample

#include <syslog.h>

int  main(int argc, char *argv[])
{
    setlogmask(LOG_UPTO (LOG_NOTICE));

    openlog("atm", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_LOCAL0);

    syslog(LOG_NOTICE, "Program started by User %d", getuid ());
    syslog(LOG_INFO, "A tree falls in a forest");

    closelog();
    return 0;
}

/var/log/syslog의 항목을 읽을 수 있습니다. 아래 지침을 따랐습니다.http://www.codealias.info/technotes/syslog_simple_example대상 파일 경로를 변경하는 방법

echo "local0.*  /var/log/mylog" >> /etc/syslog.conf

하지만 달리려고 했어

sudo /etc/init.d/syslog restart

작동하지 않고(명령을 찾을 수 없음) 컴퓨터를 다시 시작해도 /var/log/mylog에 쓰기가 시작되지 않지만 여전히 /var/log/syslog에 있습니다. 무엇이 잘못되고 있는지 아는 사람이 있나요? 감사해요.

답변1

이것이 내가 성공하는 방법입니다.

내 폴더 /etc/rsyslog.d에는 두 개의 파일이 있습니다.

20-ufw.conf 및 50-default.conf

파일을 추가했습니다.

sudo nano /etc/rsyslog.d/30-mycustomname.conf

내용은 다음과 같습니다.

# Log QSD Centro generated log messages to file
if $programname == 'centro' then /var/log/centro.log
# Uncomment the following to stop logging anything that matches the last rule.
& ~

그런 다음 /var/log/centro.log 파일이 존재하지 않는지 확인했습니다.

sudo rm -f /var/log/centro.log

그런 다음 서비스를 다시 시작합니다.

sudo service rsyslog restart

마지막으로 다음 코드가 작동합니다.

// gcc centro.c -o centro

#include <stdio.h>
#include <syslog.h>

int  main(int argc, char *argv[])
{
    openlog(NULL, 0, LOG_USER);

    syslog(LOG_INFO, "MORTACCI TUA!!!");

    closelog();
    return 0;
}

답변2

기본적으로 Ubuntu는 rsyslog를 사용합니다. 해당 구성 파일은 다음 위치에 있습니다.

/etc/rsyslog.conf

그리고

/etc/rsyslog.conf

관련 정보