[Libvir] [patch 9/9] Implement better error reporting

Richard W.M. Jones rjones at redhat.com
Sat Feb 17 13:11:48 UTC 2007


oneMark McLoughlin wrote:
> Add a qemudLog() function which uses syslog() if we're in
> daemon mode, doesn't output INFO/DEBUG messages unless
> the verbose flag is set and doesn't output DEBUG messages
> unless compiled with --enable-debug.

You're all gonna hate this I know, but libvirtd handles syslog by 
forking an external logger(1) process.  Messages sent to stderr go to 
syslog.  This is partly necessary because the SunRPC code within glibc 
is a bit too happy to send debug messages to stderr & nowhere else.

The brief code snippet to enable this is below (and note my original 
patch which you can also find on this list enables a test for LOGGER in 
autoconf):

#ifdef LOGGER
         /* Send stderr to syslog using logger.  It's a lot simpler
          * to do this.  Note that SunRPC in glibc prints lots of
          * gumf to stderr and it'd be a load of work to change that.
          */
         int fd[2];
         if (pipe (fd) == -1) {
             perror ("pipe");
             exit (2);
         }
         int pid = fork ();
         if (pid == -1) {
             perror ("fork");
             exit (2);
         }
         if (pid == 0) {         /* Child - logger. */
             const char *args[] = {
                 "logger", "-tlibvirtd", "-p", "daemon.notice", NULL
             };
             close (fd[1]);
             dup2 (fd[0], 0);
             close (fd[0]);
             execv (LOGGER, (char *const *) args);
             perror ("execv");
             _exit (1);
         }
         close (fd[0]);
         dup2 (fd[1], 2);
         close (fd[1]);
#endif

Rich.

-- 
Emerging Technologies, Red Hat  http://et.redhat.com/~rjones/
64 Baker Street, London, W1U 7DF     Mobile: +44 7866 314 421
  "[Negative numbers] darken the very whole doctrines of the equations
  and make dark of the things which are in their nature excessively
  obvious and simple" (Francis Maseres FRS, mathematician, 1759)




More information about the libvir-list mailing list