rsyslog protokolliert keine Nachrichten vom Programm

rsyslog protokolliert keine Nachrichten vom Programm

Ich versuche, (den Anfang) eines Daemons unter Ubuntu 15.04 zu schreiben, und aus irgendeinem Grund weigert sich rsyslog, meine protokollierten Anweisungen auszugeben – ich habe mehrere Lokalitäten ausprobiert (LOG_LOCAL1, LOG_LOCAL0, LOG_SYSLOG, LOG_DAEMON), den rsyslog-Dienst neu gestartet und den Code auf einer Arch Linux-VM getestet (er funktioniert einwandfrei).

Anwendungscode:

#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

Was vermisse ich?

Antwort1

Die Zeile setlogmask(LOG_UPTO(LOG_CRIT))verwirft Ihre Protokollnachricht

syslog(LOG_INFO, "floded entered");

Die Priorität von LOG_INFOist niedriger als die Priorität von LOG_CRIT. Daher

#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);
}

oder

#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);
}

verwandte Informationen