2013-10-02 14 views
6

Próbuję zapisać inny typ wpisów w oddzielnych plikach dziennika z aplikacji. Z powodu, którego próbuję się dowiedzieć, wszystkie wpisy pojawiają się we wszystkich plikach dziennika. Co mogłem robić źle?Pisanie w oddzielnych plikach dziennika

Chcę, aby tylko krytyczne wpisy wpisywały się w /tmp/log/critical.log i wpisy do debugowania, aby przejść do pliku /tmp/log/debug.log, podczas gdy wszystkie pliki mogą przejść do pliku /tmp/log/all.log log plik.

obserwuję są wpisy w pliku /etc/rsyslog.conf

local0.*            /tmp/log/all.log 
local0.alert           /tmp/log/alert.log 
local0.crit            /tmp/log/critical.log 
local0.debug           /tmp/log/debug.log 
local0.emerg           /tmp/log/emergency.log 
local0.err            /tmp/log/error.log 
local0.info            /tmp/log/info.log 
local0.notice           /tmp/log/notice.log 
local0.warning           /tmp/log/warning.log 

Mój przykładowy program w C pisanie syslog wpisów ...

#include<syslog.h> 

main() 
{ 
    openlog("myapp",LOG_CONS|LOG_PID|LOG_NDELAY,LOG_LOCAL0); 

    syslog(LOG_EMERG|LOG_LOCAL0,"Emergency",getuid()); 
    syslog(LOG_ALERT|LOG_LOCAL0,"Alert",getuid()); 
    syslog(LOG_CRIT|LOG_LOCAL0,"Critical",getuid()); 
    syslog(LOG_ERR|LOG_LOCAL0,"Error",getuid()); 
    syslog(LOG_WARNING|LOG_LOCAL0,"Warning",getuid()); 
    syslog(LOG_NOTICE|LOG_LOCAL0,"Notice",getuid()); 
    syslog(LOG_INFO|LOG_LOCAL0,"Information",getuid()); 
    syslog(LOG_DEBUG|LOG_LOCAL0,"Debug",getuid()); 

    closelog(); 
} 

Odpowiedz

3

Kluczem tutaj jest, że (jak już zapewne zgadłeś) domyślnie logujesz się na wybranym poziomie i pod nim. Możesz to zmienić w pliku konfiguracyjnym syslog, modyfikując porównanie selektorów. Domyślną jeśli nie podano jest >=, chcesz =:

local0.*             /tmp/log/all.log 
local0.=alert           /tmp/log/alert.log 
local0.=crit            /tmp/log/critical.log 
local0.=debug           /tmp/log/debug.log 
local0.=emerg           /tmp/log/emergency.log 
local0.=err            /tmp/log/error.log 
local0.=info            /tmp/log/info.log 
local0.=notice           /tmp/log/notice.log 
local0.=warning           /tmp/log/warning.log 

Jak również <, >, <=, >= można negować porównanie przy użyciu !.

+1

Witam, czy możesz udostępnić plik konfiguracyjny? – ams

+0

Jaki plik konfiguracyjny? Wpisy tam są umieszczane w twojej konfiguracji syslog. Mam moje w /etc/rsyslog.d/90-local.conf – ralight

Powiązane problemy