- logident = ident;
- logmode = mode;
-
- switch(mode) {
- case LOGMODE_STDERR:
- logpid = getpid();
- break;
- case LOGMODE_FILE:
- logpid = getpid();
- logfile = fopen(logfilename, "a");
- if(!logfile)
- logmode = LOGMODE_NULL;
- break;
- case LOGMODE_SYSLOG:
- openlog(logident, LOG_CONS | LOG_PID, LOG_DAEMON);
- break;
- }
-}
-
-void vlogger(int priority, const char *format, va_list ap) {
- switch(logmode) {
- case LOGMODE_STDERR:
- vfprintf(stderr, format, ap);
- fprintf(stderr, "\n");
- break;
- case LOGMODE_FILE:
- fprintf(logfile, "%d %s[%d]: ", time(NULL), logident, logpid);
- vfprintf(logfile, format, ap);
- fprintf(logfile, "\n");
- break;
- case LOGMODE_SYSLOG:
-#ifdef HAVE_VSYSLOG
- vsyslog(priority, format, ap);
-#else
- {
- char message[4096];
- vsnprintf(message, sizeof(message), format, ap);
- syslog(priority, "%s", message);
- }
-#endif
- break;
- }
-}
-
-void closelogger(void) {
- switch(logmode) {
- case LOGMODE_FILE:
- fclose(logfile);
- break;
- case LOGMODE_SYSLOG:
- closelog();
- break;
- }
+ if(mesh)
+ mesh->log_cb(mesh, level, message);
+ else
+ global_log_cb(NULL, level, message);