rsyslog no registra el mensaje del programa

rsyslog no registra el mensaje del programa

Estoy intentando escribir (el comienzo) de un demonio en Ubuntu 15.04 y, por alguna razón, rsyslog se niega a generar mis declaraciones registradas. Probé en varias localidades (LOG_LOCAL1, LOG_LOCAL0, LOG_SYSLOG, LOG_DAEMON), reinicié el servicio rsyslog, y he probado el código en una VM Arch Linux (funciona bien).

Código de aplicación:

#include <syslog.h>
#include <unistd.h>
#include <cstdlib>

int main(int argc, char* argv[])
{
  setlogmask(LOG_UPTO(LOG_CRIT));
  openlog("floded", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_SYSLOG);
  syslog(LOG_INFO, "floded entered");   
  closelog();
  return(0);
}

/etc/rsyslog.d/50-default.conf:

#  Default rules for rsyslog.
#
#                       For more information see rsyslog.conf(5) and /etc/rsyslog.conf

#
# First some standard log files.  Log by facility.
#
auth,authpriv.*                 /var/log/auth.log
*.*;auth,authpriv.none          -/var/log/syslog
#cron.*                         /var/log/cron.log
daemon.*                        -/var/log/daemon.log
kern.*                          -/var/log/kern.log
#lpr.*                          -/var/log/lpr.log
mail.*                          -/var/log/mail.log
#user.*                         -/var/log/user.log

#
# Logging for the mail system.  Split it up so that
# it is easy to write scripts to parse these files.
#
#mail.info                      -/var/log/mail.info
#mail.warn                      -/var/log/mail.warn
mail.err                        /var/log/mail.err

#
# Logging for INN news system.
#
news.crit                       /var/log/news/news.crit
news.err                        /var/log/news/news.err
news.notice                     -/var/log/news/news.notice

#
# Some "catch-all" log files.
#
#*.=debug;\
#       auth,authpriv.none;\
#       news.none;mail.none     -/var/log/debug
#*.=info;*.=notice;*.=warn;\
#       auth,authpriv.none;\
#       cron,daemon.none;\
#       mail,news.none          -/var/log/messages

#
# Emergencies are sent to everybody logged in.
#
*.emerg                                :omusrmsg:*

#
# I like to have messages displayed on the console, but only on a virtual
# console I usually leave idle.
#
#daemon,mail.*;\
#       news.=crit;news.=err;news.=notice;\
#       *.=debug;*.=info;\
#       *.=notice;*.=warn       /dev/tty8

# The named pipe /dev/xconsole is for the `xconsole' utility.  To use it,
# you must invoke `xconsole' with the `-file' option:
#
#    $ xconsole -file /dev/xconsole [...]
#
# NOTE: adjust the list below, or you'll go crazy if you have a reasonably
#      busy site..
#
daemon.*;mail.*;\
        news.err;\
        *.=debug;*.=info;\
        *.=notice;*.=warn       |/dev/xconsole

¿Qué me estoy perdiendo?

Respuesta1

La línea setlogmask(LOG_UPTO(LOG_CRIT))descarta su mensaje de registro.

syslog(LOG_INFO, "floded entered");

La prioridad de LOG_INFOes menor que la prioridad de LOG_CRIT. Por lo tanto

#include <syslog.h>
#include <unistd.h>
#include <cstdlib>

int main(int argc, char* argv[])
{
  // setlogmask(LOG_UPTO(LOG_CRIT));
  openlog("floded", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_SYSLOG);
  syslog(LOG_INFO, "floded entered");   
  closelog();
  return(0);
}

o

#include <syslog.h>
#include <unistd.h>
#include <cstdlib>

int main(int argc, char* argv[])
{
  setlogmask(LOG_UPTO(LOG_INFO));
  openlog("floded", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_SYSLOG);
  syslog(LOG_INFO, "floded entered");   
  closelog();
  return(0);
}

información relacionada