manager: add logging macro _NMLOG3() for logging connection messages

It unifies the way how we print the logging prefix, but also it
passes the con_uuid down for structured logging.
This commit is contained in:
Thomas Haller 2017-06-07 12:46:10 +02:00
parent 1f6078bcf5
commit 6962f14d4a
2 changed files with 54 additions and 14 deletions

View file

@ -375,6 +375,24 @@ _nm_setting_bond_get_option_type (NMSettingBond *setting, const char *name);
/*****************************************************************************/
/* nm_connection_get_uuid() asserts against NULL, which is the right thing to
* do in order to catch bugs. However, sometimes that behavior is inconvenient.
* Just try or return NULL. */
static inline const char *
_nm_connection_get_id (NMConnection *connection)
{
return connection ? nm_connection_get_id (connection) : NULL;
}
static inline const char *
_nm_connection_get_uuid (NMConnection *connection)
{
return connection ? nm_connection_get_uuid (connection) : NULL;
}
/*****************************************************************************/
typedef enum {
NM_BOND_MODE_UNKNOWN = 0,
NM_BOND_MODE_ROUNDROBIN,

View file

@ -262,6 +262,29 @@ NM_DEFINE_SINGLETON_INSTANCE (NMManager);
} \
} G_STMT_END
#define _NMLOG3(level, domain, connection, ...) \
G_STMT_START { \
const NMLogLevel _level = (level); \
const NMLogDomain _domain = (domain); \
\
if (nm_logging_enabled (_level, _domain)) { \
const NMManager *const _self = (self); \
NMConnection *const _connection = (connection); \
const char *const _con_id = _nm_connection_get_id (_connection); \
char _sbuf[32]; \
\
_nm_log (_level, _domain, 0, \
NULL, _nm_connection_get_uuid (_connection), \
"%s%s: %s%s%s" _NM_UTILS_MACRO_FIRST (__VA_ARGS__), \
_NMLOG_PREFIX_NAME, \
((_self && _self != singleton_instance) \
? nm_sprintf_buf (_sbuf, "[%p]", _self) \
: ""), \
NM_PRINT_FMT_QUOTED (_con_id, "(", _con_id, ") ", "") \
_NM_UTILS_MACRO_REST (__VA_ARGS__)); \
} \
} G_STMT_END
/*****************************************************************************/
static NM_CACHED_QUARK_FCN ("autoconnect-root", autoconnect_root_quark)
@ -1261,8 +1284,8 @@ system_create_virtual_device (NMManager *self, NMConnection *connection)
iface = nm_manager_get_connection_iface (self, connection, &parent, &error);
if (!iface) {
_LOGD (LOGD_DEVICE, "(%s) can't get a name of a virtual device: %s",
nm_connection_get_id (connection), error->message);
_LOG3D (LOGD_DEVICE, connection, "can't get a name of a virtual device: %s",
error->message);
g_error_free (error);
return NULL;
}
@ -1273,8 +1296,8 @@ system_create_virtual_device (NMManager *self, NMConnection *connection)
if (nm_device_check_connection_compatible (candidate, connection)) {
if (nm_device_is_real (candidate)) {
_LOGD (LOGD_DEVICE, "(%s) already created virtual interface name %s",
nm_connection_get_id (connection), iface);
_LOG3D (LOGD_DEVICE, connection, "already created virtual interface name %s",
iface);
return NULL;
}
@ -1288,27 +1311,26 @@ system_create_virtual_device (NMManager *self, NMConnection *connection)
factory = nm_device_factory_manager_find_factory_for_connection (connection);
if (!factory) {
_LOGE (LOGD_DEVICE, "(%s:%s) NetworkManager plugin for '%s' unavailable",
nm_connection_get_id (connection), iface,
_LOG3E (LOGD_DEVICE, connection, "(%s) NetworkManager plugin for '%s' unavailable",
iface,
nm_connection_get_connection_type (connection));
return NULL;
}
device = nm_device_factory_create_device (factory, iface, NULL, connection, NULL, &error);
if (!device) {
_LOGW (LOGD_DEVICE, "(%s) factory can't create the device: %s",
nm_connection_get_id (connection), error->message);
_LOG3W (LOGD_DEVICE, connection, "factory can't create the device: %s",
error->message);
g_error_free (error);
return NULL;
}
_LOGD (LOGD_DEVICE, "(%s) create virtual device %s",
nm_connection_get_id (connection),
_LOG3D (LOGD_DEVICE, connection, "create virtual device %s",
nm_device_get_iface (device));
if (!add_device (self, device, &error)) {
_LOGW (LOGD_DEVICE, "(%s) can't register the device with manager: %s",
nm_connection_get_id (connection), error->message);
_LOG3W (LOGD_DEVICE, connection, "can't register the device with manager: %s",
error->message);
g_error_free (error);
g_object_unref (device);
return NULL;
@ -1336,8 +1358,8 @@ system_create_virtual_device (NMManager *self, NMConnection *connection)
/* Create any backing resources the device needs */
if (!nm_device_create_and_realize (device, connection, parent, &error)) {
_LOGW (LOGD_DEVICE, "(%s) couldn't create the device: %s",
nm_connection_get_id (connection), error->message);
_LOG3W (LOGD_DEVICE, connection, "couldn't create the device: %s",
error->message);
g_error_free (error);
remove_device (self, device, FALSE, TRUE);
return NULL;