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

@@ -44,27 +44,15 @@ nm_log_handler (const gchar *log_domain,
const gchar *message, const gchar *message,
gpointer ignored); gpointer ignored);
#define LOGD_ALL \ static NMLogLevel log_level = LOGL_INFO;
(LOGD_PLATFORM | LOGD_RFKILL | LOGD_ETHER | LOGD_WIFI | LOGD_BT | LOGD_MB | \
LOGD_DHCP4 | LOGD_DHCP6 | LOGD_PPP | LOGD_WIFI_SCAN | LOGD_IP4 | \
LOGD_IP6 | LOGD_AUTOIP4 | LOGD_DNS | LOGD_VPN | LOGD_SHARING | \
LOGD_SUPPLICANT | LOGD_AGENTS | LOGD_SETTINGS | LOGD_SUSPEND | \
LOGD_CORE | LOGD_DEVICE | LOGD_OLPC | LOGD_WIMAX | \
LOGD_INFINIBAND | LOGD_FIREWALL | LOGD_ADSL | LOGD_BOND | \
LOGD_VLAN | LOGD_BRIDGE | LOGD_DBUS_PROPS | LOGD_TEAM | LOGD_CONCHECK | \
LOGD_DCB | LOGD_DISPATCH)
#define LOGD_DEFAULT (LOGD_ALL & ~(LOGD_WIFI_SCAN | LOGD_DBUS_PROPS))
static guint32 log_level = LOGL_INFO;
static char *log_domains; static char *log_domains;
static guint64 logging[LOGL_MAX]; static NMLogDomain logging[LOGL_MAX];
static gboolean logging_set_up; static gboolean logging_set_up;
static gboolean syslog_opened; static gboolean syslog_opened;
static char *logging_domains_to_string; static char *logging_domains_to_string;
typedef struct { typedef struct {
guint64 num; NMLogDomain num;
const char *name; const char *name;
} LogDesc; } LogDesc;
@@ -133,7 +121,7 @@ _ensure_initialized (void)
static gboolean static gboolean
match_log_level (const char *level, match_log_level (const char *level,
guint32 *out_level, NMLogLevel *out_level,
GError **error) GError **error)
{ {
int i; int i;
@@ -157,8 +145,8 @@ nm_logging_setup (const char *level,
GError **error) GError **error)
{ {
GString *unrecognized = NULL; GString *unrecognized = NULL;
guint64 new_logging[LOGL_MAX]; NMLogDomain new_logging[LOGL_MAX];
guint32 new_log_level = log_level; NMLogLevel new_log_level = log_level;
char **tmp, **iter; char **tmp, **iter;
int i; int i;
@@ -183,8 +171,8 @@ nm_logging_setup (const char *level,
tmp = g_strsplit_set (domains, ", ", 0); tmp = g_strsplit_set (domains, ", ", 0);
for (iter = tmp; iter && *iter; iter++) { for (iter = tmp; iter && *iter; iter++) {
const LogDesc *diter; const LogDesc *diter;
guint32 domain_log_level; NMLogLevel domain_log_level;
guint64 bits; NMLogDomain bits;
char *p; char *p;
if (!strlen (*iter)) if (!strlen (*iter))
@@ -359,7 +347,7 @@ nm_logging_all_domains_to_string (void)
} }
gboolean gboolean
nm_logging_enabled (guint32 level, guint64 domain) nm_logging_enabled (NMLogLevel level, NMLogDomain domain)
{ {
g_return_val_if_fail (level < LOGL_MAX, FALSE); g_return_val_if_fail (level < LOGL_MAX, FALSE);
@@ -371,8 +359,8 @@ nm_logging_enabled (guint32 level, guint64 domain)
void void
_nm_log (const char *loc, _nm_log (const char *loc,
const char *func, const char *func,
guint32 level, NMLogLevel level,
guint64 domain, NMLogDomain domain,
const char *fmt, const char *fmt,
...) ...)
{ {

View File

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