diff options
author | Rainer Gerhards <rgerhards@adiscon.com> | 2008-04-17 12:46:57 +0200 |
---|---|---|
committer | Rainer Gerhards <rgerhards@adiscon.com> | 2008-04-17 12:46:57 +0200 |
commit | 60309004dfc57c3243abb2f01042950201596773 (patch) | |
tree | 707b9fbe0e4cc00133611701af0999c1bdacfbfc /runtime/rsyslog.c | |
parent | e5130affc022eff12a3d9584576a385edbb13465 (diff) | |
download | rsyslog-60309004dfc57c3243abb2f01042950201596773.tar.gz rsyslog-60309004dfc57c3243abb2f01042950201596773.tar.xz rsyslog-60309004dfc57c3243abb2f01042950201596773.zip |
completed better modularity of runtime
- added the ability to specify an error log function for the
runtime
- removed dependency of core runtime on dirty.h
Note that it is "better" modularity, not perfect. There is still
work to do, but I think we can for the time being proceed with
other things.
Diffstat (limited to 'runtime/rsyslog.c')
-rw-r--r-- | runtime/rsyslog.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/runtime/rsyslog.c b/runtime/rsyslog.c index d0eaa6f8..95ac23ef 100644 --- a/runtime/rsyslog.c +++ b/runtime/rsyslog.c @@ -56,6 +56,7 @@ * A copy of the LGPL can be found in the file "COPYING.LESSER" in this distribution. */ #include "config.h" +#include <stdio.h> #include <stdlib.h> #include <assert.h> @@ -75,14 +76,33 @@ #include "queue.h" #include "conf.h" #include "glbl.h" +#include "errmsg.h" + +/* forward definitions */ +static rsRetVal dfltErrLogger(uchar *errMsg); /* globally visible static data - see comment in rsyslog.h for details */ uchar *glblModPath; /* module load path */ +rsRetVal (*glblErrLogger)(uchar*) = dfltErrLogger; /* the error logger to use by the errmsg module */ /* static data */ static int iRefCount = 0; /* our refcount - it MUST exist only once inside a process (not thread) thus it is perfectly OK to use a static. MUST be initialized to 0! */ +/* This is the default instance of the error logger. It simply writes the message + * to stderr. It is expected that this is replaced by the runtime user very early + * during startup (at least if the default is unsuitable). However, we provide a + * default so that we can log errors during the intial phase, most importantly + * during initialization. -- rgerhards. 2008-04-17 + */ +static rsRetVal dfltErrLogger(uchar *errMsg) +{ + DEFiRet; + fprintf(stderr, "rsyslog runtime error: %s\n", errMsg); + RETiRet; +} + + /* globally initialze the runtime system * NOTE: this is NOT thread safe and must not be called concurrently. If that * ever poses a problem, we may use proper mutex calls - not considered needed yet. |