From 4dbfebbdbc3ce0fff1b5b7cdeb764ec074dabb42 Mon Sep 17 00:00:00 2001 From: Angus Salkeld Date: Mon, 20 Feb 2012 14:18:04 +1100 Subject: [PATCH] LOG: add stdout target Signed-off-by: Angus Salkeld --- 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; }