Signed-off-by: Angus Salkeld <asalkeld(a)redhat.com>
---
examples/simplelog.c | 15 +++++++++++++--
include/qb/qblog.h | 1 +
lib/log.c | 4 +++-
lib/log_file.c | 9 +++++++--
4 files changed, 24 insertions(+), 5 deletions(-)
diff --git a/examples/simplelog.c b/examples/simplelog.c
index c0607c2..d5fbc0a 100644
--- a/examples/simplelog.c
+++ b/examples/simplelog.c
@@ -131,10 +131,11 @@ m_filter(struct qb_log_callsite *cs)
int32_t main(int32_t argc, char *argv[])
{
- const char *options = "vhtebdf:";
+ const char *options = "vhteobdf:";
int32_t opt;
int32_t tracer;
int32_t do_stderr = QB_FALSE;
+ int32_t do_stdout = QB_FALSE;
int32_t do_dump_blackbox = QB_FALSE;
char *logfile = NULL;
int32_t log_fd = -1;
@@ -150,6 +151,9 @@ int32_t main(int32_t argc, char *argv[])
case 'e':
do_stderr = QB_TRUE;
break;
+ case 'o':
+ do_stdout = QB_TRUE;
+ break;
case 'b':
do_blackbox = QB_TRUE;
break;
@@ -178,19 +182,26 @@ int32_t main(int32_t argc, char *argv[])
qb_log_ctl(QB_LOG_SYSLOG, QB_LOG_CONF_THREADED, do_threaded);
qb_log_tags_stringify_fn_set(my_tags_stringify);
- tracer = qb_log_custom_open(trace_logger, NULL, NULL, NULL);
if (do_stderr) {
qb_log_filter_fn_set(m_filter);
qb_log_format_set(QB_LOG_STDERR, "[%p] %4g: %f:%l %b");
qb_log_ctl(QB_LOG_STDERR, QB_LOG_CONF_ENABLED, QB_TRUE);
+ tracer = qb_log_custom_open(trace_logger, NULL, NULL, NULL);
qb_log_ctl(tracer, QB_LOG_CONF_ENABLED, QB_TRUE);
qb_log_format_set(tracer, "%4g: %n() %b");
qb_log_filter_ctl2(tracer, QB_LOG_FILTER_ADD,
QB_LOG_FILTER_FILE, __FILE__,
LOG_TRACE, 200);
}
+ if (do_stdout) {
+ qb_log_filter_ctl2(QB_LOG_STDOUT, QB_LOG_FILTER_ADD,
+ QB_LOG_FILTER_FILE, __FILE__,
+ LOG_ALERT, QB_MIN(LOG_DEBUG, _log_priority));
+ qb_log_format_set(QB_LOG_STDOUT, "[%p] %4g: %f:%l %b");
+ qb_log_ctl(QB_LOG_STDOUT, QB_LOG_CONF_ENABLED, QB_TRUE);
+ }
if (do_blackbox) {
qb_log_filter_ctl(QB_LOG_BLACKBOX, QB_LOG_FILTER_ADD,
QB_LOG_FILTER_FILE, "*", LOG_DEBUG);
diff --git a/include/qb/qblog.h b/include/qb/qblog.h
index 29cd148..7a8c66d 100644
--- a/include/qb/qblog.h
+++ b/include/qb/qblog.h
@@ -353,6 +353,7 @@ void qb_log_from_external_source_va(const char *function,
#define QB_LOG_SYSLOG 0
#define QB_LOG_STDERR 1
#define QB_LOG_BLACKBOX 2
+#define QB_LOG_STDOUT 3
#define QB_LOG_TARGET_MAX 32
diff --git a/lib/log.c b/lib/log.c
index 7fac41f..8879cfd 100644
--- a/lib/log.c
+++ b/lib/log.c
@@ -720,6 +720,7 @@ qb_log_init(const char *name, int32_t facility, uint8_t priority)
conf[QB_LOG_STDERR].state = QB_LOG_STATE_DISABLED;
conf[QB_LOG_BLACKBOX].state = QB_LOG_STATE_DISABLED;
+ conf[QB_LOG_STDOUT].state = QB_LOG_STATE_DISABLED;
logger_inited = QB_TRUE;
(void)qb_log_syslog_open(&conf[QB_LOG_SYSLOG]);
@@ -881,7 +882,8 @@ _log_target_enable(struct qb_log_target *t)
if (t->state == QB_LOG_STATE_ENABLED) {
return 0;
}
- if (t->pos == QB_LOG_STDERR) {
+ if (t->pos == QB_LOG_STDERR ||
+ t->pos == QB_LOG_STDOUT) {
rc = qb_log_stderr_open(t);
} else if (t->pos == QB_LOG_SYSLOG) {
rc = qb_log_syslog_open(t);
diff --git a/lib/log_file.c b/lib/log_file.c
index 7a77d8d..152c2fd 100644
--- a/lib/log_file.c
+++ b/lib/log_file.c
@@ -67,8 +67,13 @@ qb_log_stderr_open(struct qb_log_target *t)
t->logger = _file_logger;
t->reload = NULL;
t->close = NULL;
- (void)strlcpy(t->filename, "stderr", PATH_MAX);
- t->instance = stderr;
+ if (t->pos == QB_LOG_STDERR) {
+ (void)strlcpy(t->filename, "stderr", PATH_MAX);
+ t->instance = stderr;
+ } else {
+ (void)strlcpy(t->filename, "stdout", PATH_MAX);
+ t->instance = stdout;
+ }
return 0;
}
--
1.7.7.6