X-Git-Url: http://git.tuebingen.mpg.de/?p=dss.git;a=blobdiff_plain;f=log.h;h=78ccc1b30b2a55114e55634ca32c09c486c8cbfe;hp=e1405150e5e8fa38eeed7ddb5c45f49407e04a58;hb=2af5575f983be85475a72882a261731e99098b02;hpb=c418d2188c9c2c542270023d6fc3bc6cf34f8d29 diff --git a/log.h b/log.h index e140515..78ccc1b 100644 --- a/log.h +++ b/log.h @@ -1,3 +1,8 @@ +/* + * Copyright (C) 1997-2010 Andre Noll + * + * Licensed under the GPL v2. For licencing details see COPYING. + */ /** debug loglevel, gets really noisy */ #define DEBUG 1 @@ -17,45 +22,83 @@ /** Log messages with lower priority than that will not be compiled in. */ #define COMPILE_TIME_LOGLEVEL 0 +/** Not all compilers support __func__ or an equivalent. */ +#if (!defined(__STDC_VERSION__) || __STDC_VERSION__ < 199901L) && !defined(__GNUC__) +# if defined(_MSC_VER) && _MSC_VER >= 1300 +# define __func__ __FUNCTION__ +# else +# define DSS_NO_FUNC_NAMES +# define __func__ "" +# endif +#endif + /** \cond */ #if DEBUG > COMPILE_TIME_LOGLEVEL -#define DSS_DEBUG_LOG(f,...) dss_log(DEBUG, "%s: " f, __FUNCTION__, ## __VA_ARGS__) +#define DSS_DEBUG_LOG(args) \ + do { \ + dss_log_set_params(DEBUG, __FILE__, __LINE__, __func__); \ + dss_log args ; \ + } while (0) #else -#define DSS_DEBUG_LOG(...) do {;} while (0) +#define DSS_DEBUG_LOG(args) do {;} while (0) #endif #if INFO > COMPILE_TIME_LOGLEVEL -#define DSS_INFO_LOG(f,...) dss_log(INFO, "%s: " f, __FUNCTION__, ## __VA_ARGS__) +#define DSS_INFO_LOG(args) \ + do { \ + dss_log_set_params(INFO, __FILE__, __LINE__, __func__); \ + dss_log args ; \ + } while (0) #else -#define DSS_INFO_LOG(...) do {;} while (0) +#define DSS_INFO_LOG(args) do {;} while (0) #endif #if NOTICE > COMPILE_TIME_LOGLEVEL -#define DSS_NOTICE_LOG(f,...) dss_log(NOTICE, "%s: " f, __FUNCTION__, ## __VA_ARGS__) +#define DSS_NOTICE_LOG(args) \ + do { \ + dss_log_set_params(NOTICE, __FILE__, __LINE__, __func__); \ + dss_log args ; \ + } while (0) #else -#define DSS_NOTICE_LOG(...) do {;} while (0) +#define DSS_NOTICE_LOG(args) do {;} while (0) #endif #if WARNING > COMPILE_TIME_LOGLEVEL -#define DSS_WARNING_LOG(f,...) dss_log(WARNING, "%s: " f, __FUNCTION__, ## __VA_ARGS__) +#define DSS_WARNING_LOG(args) \ + do { \ + dss_log_set_params(WARNING, __FILE__, __LINE__, __func__); \ + dss_log args ; \ + } while (0) #else -#define DSS_WARNING_LOG(...) do {;} while (0) +#define DSS_WARNING_LOG(args) do {;} while (0) #endif #if ERROR > COMPILE_TIME_LOGLEVEL -#define DSS_ERROR_LOG(f,...) dss_log(ERROR, "%s: " f, __FUNCTION__, ## __VA_ARGS__) +#define DSS_ERROR_LOG(args) \ + do { \ + dss_log_set_params(ERROR, __FILE__, __LINE__, __func__); \ + dss_log args ; \ + } while (0) #else -#define DSS_ERROR_LOG(...) do {;} while (0) +#define DSS_ERROR_LOG(args) do {;} while (0) #endif #if CRIT > COMPILE_TIME_LOGLEVEL -#define DSS_CRIT_LOG(f,...) dss_log(CRIT, "%s: " f, __FUNCTION__, ## __VA_ARGS__) +#define DSS_CRIT_LOG(args) \ + do { \ + dss_log_set_params(CRIT, __FILE__, __LINE__, __func__); \ + dss_log args ; \ + } while (0) #else -#define DSS_CRIT_LOG(...) do {;} while (0) +#define DSS_CRIT_LOG(args) do {;} while (0) #endif #if EMERG > COMPILE_TIME_LOGLEVEL -#define DSS_EMERG_LOG(f,...) dss_log(EMERG, "%s: " f, __FUNCTION__, ## __VA_ARGS__) +#define DSS_EMERG_LOG(args) \ + do { \ + dss_log_set_params(EMERG, __FILE__, __LINE__, __func__); \ + dss_log args ; \ + } while (0) #else -#define DSS_EMERG_LOG(...) +#define DSS_EMERG_LOG(args) #endif