Escrevendo em arquivos de log separados
Eu estou tentando escrever diferentes tipos de entradas em arquivos de log separados de um aplicativo. Por motivo que estou tentando descobrir, todas as entradas aparecem em todos os arquivos de log. O que eu poderia estar fazendo errado?
Eu quero apenas entradas críticas para ir em /tmp/log/critical.log e entradas de depuração para entrar no arquivo /tmp/log/debug.log enquanto todas as entradas podem entrar no arquivo de log /tmp/log/all.log.
A seguir estão as entradas no arquivo /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
Minha amostra c programa escrevendo entradas syslog ...
#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();
}