log: add new log output mode, that prints to console, but prefixes with syslog priority

This is useful when we execute our own programs, reading output from its
STDERR, and want to retain priority information.
This commit is contained in:
Lennart Poettering 2015-01-22 03:47:46 +01:00
parent 07e10d1a7c
commit aca83a53ee
2 changed files with 11 additions and 3 deletions

View file

@ -314,14 +314,19 @@ static int write_to_console(
const char *object,
const char *buffer) {
char location[64];
struct iovec iovec[5] = {};
char location[64], prefix[1 + DECIMAL_STR_MAX(int) + 2];
struct iovec iovec[6] = {};
unsigned n = 0;
bool highlight;
if (console_fd < 0)
return 0;
if (log_target == LOG_TARGET_CONSOLE_PREFIXED) {
sprintf(prefix, "<%i>", level);
IOVEC_SET_STRING(iovec[n++], prefix);
}
highlight = LOG_PRI(level) <= LOG_ERR && show_color;
if (show_location) {
@ -1016,7 +1021,8 @@ int log_show_location_from_string(const char *e) {
}
bool log_on_console(void) {
if (log_target == LOG_TARGET_CONSOLE)
if (log_target == LOG_TARGET_CONSOLE ||
log_target == LOG_TARGET_CONSOLE_PREFIXED)
return true;
return syslog_fd < 0 && kmsg_fd < 0 && journal_fd < 0;
@ -1024,6 +1030,7 @@ bool log_on_console(void) {
static const char *const log_target_table[_LOG_TARGET_MAX] = {
[LOG_TARGET_CONSOLE] = "console",
[LOG_TARGET_CONSOLE_PREFIXED] = "console-prefixed",
[LOG_TARGET_KMSG] = "kmsg",
[LOG_TARGET_JOURNAL] = "journal",
[LOG_TARGET_JOURNAL_OR_KMSG] = "journal-or-kmsg",

View file

@ -34,6 +34,7 @@
typedef enum LogTarget{
LOG_TARGET_CONSOLE,
LOG_TARGET_CONSOLE_PREFIXED,
LOG_TARGET_KMSG,
LOG_TARGET_JOURNAL,
LOG_TARGET_JOURNAL_OR_KMSG,