mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager
synced 2024-10-15 04:24:32 +00:00
shared: add nm_utils_syslog_coerce_from_nm() util
When a VPN plugin logs to syslog(), it should not use the syslog levels that were passed in by NetworkManager directly. Instead, it must map LOG_NOTICE to LOG_INFO and LOG_INFO to LOG_DEBUG. Add a utility function does gets that right.
This commit is contained in:
parent
cdedd2b53e
commit
1206fd066b
|
@ -24,6 +24,38 @@
|
|||
|
||||
#include <syslog.h>
|
||||
|
||||
static inline int
|
||||
nm_utils_syslog_coerce_from_nm (int syslog_level)
|
||||
{
|
||||
/* NetworkManager uses internally NMLogLevel levels. When spawning
|
||||
* the VPN plugin, it maps those levels to syslog levels as follows:
|
||||
*
|
||||
* LOGL_INFO = LOG_NOTICE,
|
||||
* LOGL_DEBUG = LOG_INFO,
|
||||
* LOGL_TRACE = LOG_DEBUG,
|
||||
*
|
||||
* However, when actually printing to syslog, we don't want to print messages
|
||||
* with LOGL_INFO level as LOG_NOTICE, because they are *not* to be highlighted.
|
||||
*
|
||||
* In other words: NetworkManager has 3 levels that should not require highlighting:
|
||||
* LOGL_INFO, LOGL_DEBUG, LOGL_TRACE. syslog on the other hand has only LOG_INFO and LOG_DEBUG.
|
||||
*
|
||||
* So, coerce those values before printing to syslog. When you receive the syslog_level
|
||||
* from NetworkManager, instead of calling
|
||||
* syslog(syslog_level, ...)
|
||||
* you should call
|
||||
* syslog(nm_utils_syslog_coerce_from_nm(syslog_level), ...)
|
||||
*/
|
||||
switch (syslog_level) {
|
||||
case LOG_INFO:
|
||||
return LOG_DEBUG;
|
||||
case LOG_NOTICE:
|
||||
return LOG_INFO;
|
||||
default:
|
||||
return syslog_level;
|
||||
}
|
||||
}
|
||||
|
||||
static inline const char *
|
||||
nm_utils_syslog_to_str (int syslog_level)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue