From: Vincent Bernat Date: Sun, 16 Dec 2012 12:12:51 +0000 (+0100) Subject: log: prefix logs with a token to allow filtering X-Git-Tag: 0.7.0~66 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=26fa5d1793cff7c7937a536ee49cd69f457fb981;p=thirdparty%2Flldpd.git log: prefix logs with a token to allow filtering Currently, the token defaults to the filename. Filtering has yet to be done. --- diff --git a/src/daemon/agent.c b/src/daemon/agent.c index 0a26522c..2e8a85cd 100644 --- a/src/daemon/agent.c +++ b/src/daemon/agent.c @@ -1796,14 +1796,14 @@ agent_log_callback(int major, int minor, if (msg && msg[strlen(msg)-1] == '\n') msg[strlen(msg)-1] = '\0'; switch (slm->priority) { - case LOG_EMERG: log_warnx("snmp[emerg]: %s", msg?msg:slm->msg); break; - case LOG_ALERT: log_warnx("snmp[alert]: %s", msg?msg:slm->msg); break; - case LOG_CRIT: log_warnx("snmp[crit]: %s", msg?msg:slm->msg); break; - case LOG_ERR: log_warnx("snmp[err]: %s", msg?msg:slm->msg); break; - case LOG_WARNING: log_warnx("snmp[warning]: %s", msg?msg:slm->msg); break; - case LOG_NOTICE: log_info ("snmp[notice]: %s", msg?msg:slm->msg); break; - case LOG_INFO: log_info ("snmp[info]: %s", msg?msg:slm->msg); break; - case LOG_DEBUG: log_debug("snmp[debug]: %s", msg?msg:slm->msg); break; + case LOG_EMERG: log_warnx("snmp", "%s", msg?msg:slm->msg); break; + case LOG_ALERT: log_warnx("snmp", "%s", msg?msg:slm->msg); break; + case LOG_CRIT: log_warnx("snmp", "%s", msg?msg:slm->msg); break; + case LOG_ERR: log_warnx("snmp", "%s", msg?msg:slm->msg); break; + case LOG_WARNING: log_warnx("snmp", "%s", msg?msg:slm->msg); break; + case LOG_NOTICE: log_info ("snmp", "%s", msg?msg:slm->msg); break; + case LOG_INFO: log_info ("snmp", "%s", msg?msg:slm->msg); break; + case LOG_DEBUG: log_debug("snmp", "%s", msg?msg:slm->msg); break; } free(msg); return SNMP_ERR_NOERROR; diff --git a/src/daemon/event.c b/src/daemon/event.c index 5439e7e4..0c9e2c67 100644 --- a/src/daemon/event.c +++ b/src/daemon/event.c @@ -28,10 +28,10 @@ static void levent_log_cb(int severity, const char *msg) { switch (severity) { - case _EVENT_LOG_DEBUG: log_debug("libevent[debug]: %s", msg); break; - case _EVENT_LOG_MSG: log_info ("libevent[info]: %s", msg); break; - case _EVENT_LOG_WARN: log_warnx("libevent[warn]: %s", msg); break; - case _EVENT_LOG_ERR: log_warnx("libevent[error]: %s", msg); break; + case _EVENT_LOG_DEBUG: log_debug("libevent", "%s", msg); break; + case _EVENT_LOG_MSG: log_info ("libevent", "%s", msg); break; + case _EVENT_LOG_WARN: log_warnx("libevent", "%s", msg); break; + case _EVENT_LOG_ERR: log_warnx("libevent", "%s", msg); break; } } diff --git a/src/log.c b/src/log.c index df5fd80f..1916b74f 100644 --- a/src/log.c +++ b/src/log.c @@ -34,7 +34,7 @@ static int debug = 1; /* Logging can be modified by providing an appropriate log handler. */ static void (*logh)(int severity, const char *msg) = NULL; -static void vlog(int, const char *, va_list); +static void vlog(int, const char *, const char *, va_list); static void logit(int, const char *, ...); void @@ -61,7 +61,7 @@ logit(int pri, const char *fmt, ...) va_list ap; va_start(ap, fmt); - vlog(pri, fmt, ap); + vlog(pri, NULL, fmt, ap); va_end(ap); } @@ -84,33 +84,33 @@ translate(int fd, int priority) switch (tty) { case 1: switch (priority) { - case LOG_EMERG: return "\033[1;37;41m[EMRG]\033[0m"; - case LOG_ALERT: return "\033[1;37;41m[ALRT]\033[0m"; - case LOG_CRIT: return "\033[1;37;41m[CRIT]\033[0m"; - case LOG_ERR: return "\033[1;31m[ ERR]\033[0m"; - case LOG_WARNING: return "\033[1;33m[WARN]\033[0m"; - case LOG_NOTICE: return "\033[1;34m[NOTI]\033[0m"; - case LOG_INFO: return "\033[1;34m[INFO]\033[0m"; - case LOG_DEBUG: return "\033[1;30m[ DBG]\033[0m"; + case LOG_EMERG: return "\033[1;37;41m[EMRG"; + case LOG_ALERT: return "\033[1;37;41m[ALRT"; + case LOG_CRIT: return "\033[1;37;41m[CRIT"; + case LOG_ERR: return "\033[1;31m[ ERR"; + case LOG_WARNING: return "\033[1;33m[WARN"; + case LOG_NOTICE: return "\033[1;34m[NOTI"; + case LOG_INFO: return "\033[1;34m[INFO"; + case LOG_DEBUG: return "\033[1;30m[ DBG"; } break; default: switch (priority) { - case LOG_EMERG: return "[EMRG]"; - case LOG_ALERT: return "[ALRT]"; - case LOG_CRIT: return "[CRIT]"; - case LOG_ERR: return "[ ERR]"; - case LOG_WARNING: return "[WARN]"; - case LOG_NOTICE: return "[NOTI]"; - case LOG_INFO: return "[INFO]"; - case LOG_DEBUG: return "[ DBG]"; + case LOG_EMERG: return "[EMRG"; + case LOG_ALERT: return "[ALRT"; + case LOG_CRIT: return "[CRIT"; + case LOG_ERR: return "[ ERR"; + case LOG_WARNING: return "[WARN"; + case LOG_NOTICE: return "[NOTI"; + case LOG_INFO: return "[INFO"; + case LOG_DEBUG: return "[ DBG"; } } return "[UNKN]"; } static void -vlog(int pri, const char *fmt, va_list ap) +vlog(int pri, const char *token, const char *fmt, va_list ap) { if (logh) { char *result; @@ -123,9 +123,11 @@ vlog(int pri, const char *fmt, va_list ap) if (debug || logh) { char *nfmt; /* best effort in out of mem situations */ - if (asprintf(&nfmt, "%s %s %s\n", + if (asprintf(&nfmt, "%s %s%s%s]%s %s\n", date(), translate(STDERR_FILENO, pri), + token ? "/" : "", token ? token : "", + isatty(STDERR_FILENO) ? "\033[0m" : "", fmt) == -1) { vfprintf(stderr, fmt, ap); fprintf(stderr, "\n"); @@ -140,7 +142,7 @@ vlog(int pri, const char *fmt, va_list ap) void -log_warn(const char *emsg, ...) +log_warn(const char *token, const char *emsg, ...) { char *nfmt; va_list ap; @@ -153,10 +155,10 @@ log_warn(const char *emsg, ...) if (asprintf(&nfmt, "%s: %s", emsg, strerror(errno)) == -1) { /* we tried it... */ - vlog(LOG_WARNING, emsg, ap); + vlog(LOG_WARNING, token, emsg, ap); logit(LOG_WARNING, "%s", strerror(errno)); } else { - vlog(LOG_WARNING, nfmt, ap); + vlog(LOG_WARNING, token, nfmt, ap); free(nfmt); } va_end(ap); @@ -164,35 +166,35 @@ log_warn(const char *emsg, ...) } void -log_warnx(const char *emsg, ...) +log_warnx(const char *token, const char *emsg, ...) { va_list ap; va_start(ap, emsg); - vlog(LOG_WARNING, emsg, ap); + vlog(LOG_WARNING, token, emsg, ap); va_end(ap); } void -log_info(const char *emsg, ...) +log_info(const char *token, const char *emsg, ...) { va_list ap; if (debug > 1 || logh) { va_start(ap, emsg); - vlog(LOG_INFO, emsg, ap); + vlog(LOG_INFO, token, emsg, ap); va_end(ap); } } void -log_debug(const char *emsg, ...) +log_debug(const char *token, const char *emsg, ...) { va_list ap; if (debug > 2 || logh) { va_start(ap, emsg); - vlog(LOG_DEBUG, emsg, ap); + vlog(LOG_DEBUG, token, emsg, ap); va_end(ap); } } diff --git a/src/log.h b/src/log.h index 957f5349..3f9598e0 100644 --- a/src/log.h +++ b/src/log.h @@ -19,15 +19,18 @@ #define _LOG_H /* log.c */ +#include +#define __FILENAME__ (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__) + void log_init(int, const char *); -void log_warn(const char *, ...) __attribute__ ((format (printf, 1, 2))); -#define LLOG_WARN(x,...) log_warn("%s: " x, __FUNCTION__ , ## __VA_ARGS__) -void log_warnx(const char *, ...) __attribute__ ((format (printf, 1, 2))); -#define LLOG_WARNX(x,...) log_warnx("%s: " x, __FUNCTION__ , ## __VA_ARGS__) -void log_info(const char *, ...) __attribute__ ((format (printf, 1, 2))); -#define LLOG_INFO(x,...) log_info("%s: " x, __FUNCTION__ , ## __VA_ARGS__) -void log_debug(const char *, ...) __attribute__ ((format (printf, 1, 2))); -#define LLOG_DEBUG(x,...) log_debug("%s: " x, __FUNCTION__ , ## __VA_ARGS__) +void log_warn(const char *, const char *, ...) __attribute__ ((format (printf, 2, 3))); +#define LLOG_WARN(x,...) log_warn(__FILENAME__, x, ## __VA_ARGS__) +void log_warnx(const char *, const char *, ...) __attribute__ ((format (printf, 2, 3))); +#define LLOG_WARNX(x,...) log_warnx(__FILENAME__, x, ## __VA_ARGS__) +void log_info(const char *, const char *, ...) __attribute__ ((format (printf, 2, 3))); +#define LLOG_INFO(x,...) log_info(__FILENAME__, x, ## __VA_ARGS__) +void log_debug(const char *, const char *, ...) __attribute__ ((format (printf, 2, 3))); +#define LLOG_DEBUG(x,...) log_debug(__FILENAME__, x, ## __VA_ARGS__) void fatal(const char *); void fatalx(const char *);