chiark / gitweb /
log: add new log output mode, that prints to console, but prefixes with syslog priority
[elogind.git] / src / shared / log.c
index af1a932c86e9e37971c821f2e30b07d9a7481171..f8c16de777c242da5841f290f0ee927a4751defd 100644 (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",