Escribiendo en archivos de registro separados

Estoy tratando de escribir diferentes tipos de entradas en archivos de registro separados de una aplicación. Por la razón que estoy tratando de averiguar, todas las entradas aparecen en todos los archivos de registro. ¿Qué podría estar haciendo mal?

Solo quiero que las entradas críticas se incluyan en /tmp/log/critical.log y que las entradas de depuración se introduzcan en el archivo /tmp/log/debug.log, mientras que todas las entidades pueden acceder al archivo de registro /tmp/log/all.log

Las siguientes son las entradas en el archivo /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

Mi programa c de muestra escribiendo entradas de 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();
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta