core/logging: make log level and domain a C enum

This way the compiler issues a warning when accidently
switching the level and domain arguments when logging.

Make LOGD_ALL and LOGD_DEFAULT members of the enum instead
defining them. Previously the LOGD_ALL define included all
the defined domains, hence this is no functional change.

Also define the logging domain aliases as enum members (instead
of preprocessor defines).

Signed-off-by: Thomas Haller <thaller@redhat.com>
This commit is contained in:
Thomas Haller
2014-10-30 12:44:36 +01:00
parent 4e404212fc
commit f4f3f4d69b
2 changed files with 29 additions and 33 deletions

View File

@@ -32,7 +32,7 @@
#include "nm-utils-internal.h"
/* Log domains */
enum {
typedef enum { /*< skip >*/
LOGD_NONE = 0LL,
LOGD_PLATFORM = (1LL << 0), /* Platform services */
LOGD_RFKILL = (1LL << 1),
@@ -69,14 +69,22 @@ enum {
LOGD_CONCHECK = (1LL << 32),
LOGD_DCB = (1LL << 33), /* Data Center Bridging */
LOGD_DISPATCH = (1LL << 34),
};
#define LOGD_DHCP (LOGD_DHCP4 | LOGD_DHCP6)
#define LOGD_IP (LOGD_IP4 | LOGD_IP6)
#define LOGD_HW LOGD_PLATFORM
__LOGD_MAX,
LOGD_ALL = ((__LOGD_MAX - 1LL) << 1) - 1LL,
LOGD_DEFAULT = LOGD_ALL & ~(
LOGD_DBUS_PROPS |
LOGD_WIFI_SCAN |
0),
/* aliases: */
LOGD_DHCP = LOGD_DHCP4 | LOGD_DHCP6,
LOGD_IP = LOGD_IP4 | LOGD_IP6,
LOGD_HW = LOGD_PLATFORM,
} NMLogDomain;
/* Log levels */
enum {
typedef enum { /*< skip >*/
LOGL_TRACE,
LOGL_DEBUG,
LOGL_INFO,
@@ -84,7 +92,7 @@ enum {
LOGL_ERR,
LOGL_MAX
};
} NMLogLevel;
#define nm_log_err(domain, ...) nm_log (LOGL_ERR, (domain), __VA_ARGS__)
#define nm_log_warn(domain, ...) nm_log (LOGL_WARN, (domain), __VA_ARGS__)
@@ -128,14 +136,14 @@ enum {
void _nm_log (const char *loc,
const char *func,
guint32 level,
guint64 domain,
NMLogLevel level,
NMLogDomain domain,
const char *fmt,
...) __attribute__((__format__ (__printf__, 5, 6)));
const char *nm_logging_level_to_string (void);
const char *nm_logging_domains_to_string (void);
gboolean nm_logging_enabled (guint32 level, guint64 domain);
gboolean nm_logging_enabled (NMLogLevel level, NMLogDomain domain);
const char *nm_logging_all_levels_to_string (void);
const char *nm_logging_all_domains_to_string (void);