From: greg@kroah.com Date: Mon, 2 Feb 2004 16:19:41 +0000 (-0800) Subject: [PATCH] rework the logging code so that each program logs with the proper name in... X-Git-Tag: 016~10 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=95a6f4c8acafe7031087667aa556a50a6a091c93 [PATCH] rework the logging code so that each program logs with the proper name in the syslog. --- diff --git a/Makefile b/Makefile index 05d5da5a3..386583b7e 100644 --- a/Makefile +++ b/Makefile @@ -195,7 +195,6 @@ OBJS = udev_config.o \ udev-add.o \ udev-remove.o \ udevdb.o \ - logging.o \ namedev.o \ namedev_parse.o \ $(SYSFS) \ @@ -254,15 +253,15 @@ $(ROOT): udev.o $(OBJS) $(HEADERS) $(GEN_HEADERS) $(STRIPCMD) $@ $(HELPER): udevinfo.o $(OBJS) $(HEADERS) - $(LD) $(LDFLAGS) -o $@ $(CRT0) udevinfo.o logging.o udev_config.o udevdb.o $(SYSFS) $(TDB) $(LIB_OBJS) $(ARCH_LIB_OBJS) + $(LD) $(LDFLAGS) -o $@ $(CRT0) udevinfo.o udev_config.o udevdb.o $(SYSFS) $(TDB) $(LIB_OBJS) $(ARCH_LIB_OBJS) $(STRIPCMD) $@ -$(DAEMON): udevd.h udevd.o udevd.o logging.o - $(LD) $(LDFLAGS) -lpthread -o $@ $(CRT0) udevd.o logging.o $(LIB_OBJS) $(ARCH_LIB_OBJS) +$(DAEMON): udevd.h udevd.o + $(LD) $(LDFLAGS) -lpthread -o $@ $(CRT0) udevd.o $(LIB_OBJS) $(ARCH_LIB_OBJS) $(STRIPCMD) $@ -$(SENDER): udevd.h udevsend.o udevd.o logging.o - $(LD) $(LDFLAGS) -o $@ $(CRT0) udevsend.o logging.o $(LIB_OBJS) $(ARCH_LIB_OBJS) +$(SENDER): udevd.h udevsend.o + $(LD) $(LDFLAGS) -o $@ $(CRT0) udevsend.o $(LIB_OBJS) $(ARCH_LIB_OBJS) $(STRIPCMD) $@ clean: diff --git a/libsysfs/sysfs.h b/libsysfs/sysfs.h index 4ea491935..49c9285bc 100644 --- a/libsysfs/sysfs.h +++ b/libsysfs/sysfs.h @@ -34,7 +34,7 @@ /* Debugging */ #ifdef DEBUG -#include +#include "../logging.h" #define dprintf(format, arg...) \ do { \ log_message (LOG_DEBUG , "%s: " format , __FUNCTION__ , ## arg); \ @@ -43,8 +43,4 @@ #define dprintf(format, arg...) do { } while (0) #endif -extern int log_message (int level, const char *format, ...) - __attribute__ ((format (printf, 2, 3))); - - #endif /* _SYSFS_H_ */ diff --git a/logging.h b/logging.h index df5922b3e..e233ddc88 100644 --- a/logging.h +++ b/logging.h @@ -1,9 +1,9 @@ /* * logging.h * - * Userspace devfs + * Simple logging functions that can be compiled away into nothing. * - * Copyright (C) 2003 Greg Kroah-Hartman + * Copyright (C) 2003,2004 Greg Kroah-Hartman * Copyright (C) 2004 Kay Sievers * * This program is free software; you can redistribute it and/or modify it @@ -29,6 +29,7 @@ #define dbg_parse(format, arg...) do { } while (0) #ifdef LOG +#include #include #undef info @@ -54,9 +55,26 @@ } while (0) #endif -#endif /* LOG */ - -extern int log_message (int level, const char *format, ...) +static void log_message (int level, const char *format, ...) __attribute__ ((format (printf, 2, 3))); +static inline void log_message (int level, const char *format, ...) +{ + va_list args; + + va_start(args, format); + vsyslog(level, format, args); + va_end(args); +} + +/* each program must declare this variable somewhere */ +extern unsigned char logname[42]; + +static inline void init_logging(char *program_name) +{ + snprintf(logname, 42,"%s[%d]", program_name, getpid()); + openlog(logname, 0, LOG_DAEMON); +} + +#endif /* LOG */ #endif diff --git a/udev.c b/udev.c index 38b26916c..b45fb336b 100644 --- a/udev.c +++ b/udev.c @@ -38,6 +38,7 @@ /* global variables */ char **main_argv; char **main_envp; +unsigned char logname[42]; static void sig_handler(int signum) { @@ -174,6 +175,7 @@ int main(int argc, char **argv, char **envp) main_argv = argv; main_envp = envp; + init_logging("udev"); dbg("version %s", UDEV_VERSION); return udev_hotplug(argc, argv); diff --git a/udevd.c b/udevd.c index dc7d581c2..331b7e4b8 100644 --- a/udevd.c +++ b/udevd.c @@ -42,6 +42,7 @@ #include "logging.h" +unsigned char logname[42]; static pthread_mutex_t msg_lock; static pthread_mutex_t msg_active_lock; static pthread_cond_t msg_active; @@ -354,6 +355,8 @@ int main(int argc, char *argv[]) pthread_t mgr_exec_tid; int retval; + init_logging("udevd"); + /* only let one version of the daemon run at any one time */ if (one_and_only() != 0) exit(0); diff --git a/udevinfo.c b/udevinfo.c index 4d28755b2..71a9a6d93 100644 --- a/udevinfo.c +++ b/udevinfo.c @@ -38,6 +38,7 @@ char **main_argv; int main_argc; +unsigned char logname[42]; static int print_all_attributes(const char *path) { @@ -412,6 +413,8 @@ int main(int argc, char *argv[], char *envp[]) main_argv = argv; main_argc = argc; + init_logging("udevinfo"); + /* initialize our configuration */ udev_init_config(); diff --git a/udevsend.c b/udevsend.c index 0ddc6839d..6af9df770 100644 --- a/udevsend.c +++ b/udevsend.c @@ -40,6 +40,7 @@ #include "udevd.h" #include "logging.h" +unsigned char logname[42]; static inline char *get_action(void) { @@ -126,6 +127,8 @@ int main(int argc, char* argv[]) int sock; struct sockaddr_un saddr; + init_logging("udevsend"); + subsystem = argv[1]; if (subsystem == NULL) { dbg("no subsystem");