From 5899f3b7f62151dade30010370fb5d2bcdb93d3a Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 20 Jan 2010 19:18:52 +0100 Subject: [PATCH] add minimal logging framework --- Makefile | 2 +- log.c | 38 ++++++++++++++++++++++++++++++++++++++ log.h | 23 +++++++++++++++++++++++ 3 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 log.c create mode 100644 log.h diff --git a/Makefile b/Makefile index cc55d4d14..f4bbb2aef 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ CFLAGS=-Wall -Wextra -O0 -g -pipe -D_GNU_SOURCE -fdiagnostics-show-option -Wno-unused-parameter LIBS=-lrt -COMMON=name.o util.o set.o hashmap.o strv.o job.o manager.o conf-parser.o load-fragment.o socket-util.c +COMMON=name.o util.o set.o hashmap.o strv.o job.o manager.o conf-parser.o load-fragment.o socket-util.o log.o all: systemd test-engine diff --git a/log.c b/log.c new file mode 100644 index 000000000..8d2921393 --- /dev/null +++ b/log.c @@ -0,0 +1,38 @@ +/*-*- Mode: C; c-basic-offset: 8 -*-*/ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include +#include + +#include "log.h" + +void log_meta( + int level, + const char*file, + int line, + const char *func, + const char *format, ...) { + + const char *prefix, *suffix; + va_list ap; + + if (LOG_PRI(level) <= LOG_ERR) { + prefix = "\x1B[1;31m"; + suffix = "\x1B[0m"; + } else { + prefix = ""; + suffix = ""; + } + + va_start(ap, format); + + fprintf(stderr, "(%s:%u) %s", file, line, prefix); + vfprintf(stderr, format, ap); + fprintf(stderr, "%s\n", suffix); + + va_end(ap); + +} diff --git a/log.h b/log.h new file mode 100644 index 000000000..628f5b8df --- /dev/null +++ b/log.h @@ -0,0 +1,23 @@ +/*-*- Mode: C; c-basic-offset: 8 -*-*/ + +#ifndef foologhfoo +#define foologhfoo + +#include + +#include "macro.h" + +void log_meta( + int level, + const char*file, + int line, + const char *func, + const char *format, ...) __printf_attr(5,6); + +#define log_debug(...) log_meta(LOG_DEBUG, __FILE__, __LINE__, __func__, __VA_ARGS__) +#define log_info(...) log_meta(LOG_INFO, __FILE__, __LINE__, __func__, __VA_ARGS__) +#define log_notice(...) log_meta(LOG_NOTICE, __FILE__, __LINE__, __func__, __VA_ARGS__) +#define log_warning(...) log_meta(LOG_WARNING, __FILE__, __LINE__, __func__, __VA_ARGS__) +#define log_error(...) log_meta(LOG_ERR, __FILE__, __LINE__, __func__, __VA_ARGS__) + +#endif -- 2.30.2