summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZdenek Kabelac <zkabelac@redhat.com>2016-11-03 12:01:01 +0100
committerZdenek Kabelac <zkabelac@redhat.com>2016-11-03 12:43:09 +0100
commitcd468b6218fc5c46e98ee0061010724c298c312c (patch)
treec5b526b475cd698fd0dd269bec58ddec494204b9
parent33dd1f7747ecb4e16fb807af6673592d1b0d4c3d (diff)
downloadlvm2-cd468b6218fc5c46e98ee0061010724c298c312c.tar.gz
dmeventd: debug only subsystemd with # sign
Reword the logging logic and try to restore previous logging behavior for 'standalone' running daemon while preserving debuggable feautures it has gained. So actual rules: dmeventd without any '-d' option will syslog all messages from dmeventd.c it dmeventd plugins. log_notice()==log_verbose() log_info()==log_very_verbose() But to show also log_debug() used has to give '-ddd'. When user specified '-d, -dd, -ddd, -dddd' it will also enable tracing of messages from libdm & lib executed code - which is mainly useful for testing i.e.: 'dmeventd -fldddd'
-rw-r--r--WHATS_NEW_DM1
-rw-r--r--daemons/dmeventd/libdevmapper-event.c26
2 files changed, 19 insertions, 8 deletions
diff --git a/WHATS_NEW_DM b/WHATS_NEW_DM
index fa77d10c8..73a517177 100644
--- a/WHATS_NEW_DM
+++ b/WHATS_NEW_DM
@@ -1,5 +1,6 @@
Version 1.02.136 -
======================================
+ Notice and Info messages are again logged from dmeventd and its plugins.
Dmeventd now also respects DM_ABORT_ON_INTERNAL_ERRORS as libdm based tool.
Report as non default dm logging also when logging with errno was changed.
Use log_level() macro to consistently decode message log level in dmeventd.
diff --git a/daemons/dmeventd/libdevmapper-event.c b/daemons/dmeventd/libdevmapper-event.c
index 12173fd6a..b23b6c152 100644
--- a/daemons/dmeventd/libdevmapper-event.c
+++ b/daemons/dmeventd/libdevmapper-event.c
@@ -872,22 +872,31 @@ void dm_event_log(const char *subsys, int level, const char *file,
FILE *stream = log_stderr(level) ? stderr : stdout;
int prio;
time_t now;
+ int log_with_debug = 0;
+
+ if (subsys[0] == '#') {
+ /* Subsystems starting with '#' are logged
+ * only when debugging is enabled. */
+ log_with_debug++;
+ subsys++;
+ }
switch (log_level(level)) {
case _LOG_DEBUG:
+ /* Never shown without -ddd */
if (_debug_level < 3)
return;
prio = LOG_DEBUG;
indent = " ";
break;
case _LOG_INFO:
- if (_debug_level < 2)
+ if (log_with_debug && _debug_level < 2)
return;
prio = LOG_INFO;
indent = " ";
break;
case _LOG_NOTICE:
- if (_debug_level < 1)
+ if (log_with_debug && _debug_level < 1)
return;
prio = LOG_NOTICE;
indent = " ";
@@ -913,12 +922,13 @@ void dm_event_log(const char *subsys, int level, const char *file,
if (!start)
start = now;
now -= start;
- fprintf(stream, "[%2d:%02d] %8x:%-6s%s",
- (int)now / 60, (int)now % 60,
- // TODO: Maybe use shorter ID
- // ((int)(pthread_self()) >> 6) & 0xffff,
- (int)pthread_self(), subsys,
- (_debug_level > 3) ? "" : indent);
+ if (_debug_level)
+ fprintf(stream, "[%2d:%02d] %8x:%-6s%s",
+ (int)now / 60, (int)now % 60,
+ // TODO: Maybe use shorter ID
+ // ((int)(pthread_self()) >> 6) & 0xffff,
+ (int)pthread_self(), subsys,
+ (_debug_level > 3) ? "" : indent);
if (_debug_level > 3)
fprintf(stream, "%28s:%4d %s", file, line, indent);
vfprintf(stream, _(format), ap);