]> git.ipfire.org Git - thirdparty/lldpd.git/commitdiff
log: prefix logs with a token to allow filtering
authorVincent Bernat <bernat@luffy.cx>
Sun, 16 Dec 2012 12:12:51 +0000 (13:12 +0100)
committerVincent Bernat <bernat@luffy.cx>
Sun, 16 Dec 2012 12:12:51 +0000 (13:12 +0100)
Currently, the token defaults to the filename. Filtering has yet to be
done.

src/daemon/agent.c
src/daemon/event.c
src/log.c
src/log.h

index 0a26522c4193c4ab45ae557426b0f0e62d7c3be7..2e8a85cd8d113d9bd00b8c654ab55b1d31931248 100644 (file)
@@ -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;
index 5439e7e4bb0267a1bb1733e0a4fbe63f7843681a..0c9e2c67df143e53fb270d4ad814560eb9c36f6c 100644 (file)
@@ -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;
        }
 }
 
index df5fd80f4e2a463bdcf3d458d9b4d820d39a0a4d..1916b74f8fb49bb25e26c39ecba19ee9c23dcd2b 100644 (file)
--- 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);
        }
 }
index 957f534977d29cd771873b17641585e11fe0a76f..3f9598e0470eb5a2bc8a3dd91ab060fbf7275789 100644 (file)
--- a/src/log.h
+++ b/src/log.h
 #define _LOG_H
 
 /* log.c */
+#include <string.h>
+#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 *);