all lists on lists.proxmox.com
 help / color / mirror / Atom feed
* [pbs-devel] [PATCH] log: fallback to stderr if syslog not available
@ 2024-09-10 13:03 Gabriel Goller
  2024-09-12  9:29 ` Fiona Ebner
  2024-09-16 13:12 ` [pbs-devel] applied: " Wolfgang Bumiller
  0 siblings, 2 replies; 5+ messages in thread
From: Gabriel Goller @ 2024-09-10 13:03 UTC (permalink / raw)
  To: pbs-devel

Don't panic when the syslog is not available - which happens commonly in
containers and sbuild environments (chroot and unshare) - instead
fallback to stderr.

Signed-off-by: Gabriel Goller <g.goller@proxmox.com>
---

Note: this fixes `make sbuild` for pve-storage.
Disclaimer: haven't quite figured out why tbh, I don't see where the
verify_api function calls proxmox-backup-api or proxmox-backup-proxy. 

 proxmox-log/src/lib.rs | 42 +++++++++++++++++++++++++++++++-----------
 1 file changed, 31 insertions(+), 11 deletions(-)

diff --git a/proxmox-log/src/lib.rs b/proxmox-log/src/lib.rs
index 0cf5cb7a50b2..27d0b8a23e91 100644
--- a/proxmox-log/src/lib.rs
+++ b/proxmox-log/src/lib.rs
@@ -50,8 +50,7 @@ pub fn init_logger(
     }
     let registry = tracing_subscriber::registry()
         .with(
-            tracing_journald::layer()
-                .expect("Unable to open syslog")
+            journald_or_stderr_layer()
                 .with_filter(filter_fn(|metadata| {
                     !LogContext::exists() || *metadata.level() >= Level::ERROR
                 }))
@@ -127,6 +126,35 @@ impl LogContext {
     }
 }
 
+fn journald_or_stderr_layer<S>() -> Box<dyn tracing_subscriber::Layer<S> + Send + Sync>
+where
+    S: tracing::Subscriber,
+    S: for<'a> tracing_subscriber::registry::LookupSpan<'a>,
+{
+    match tracing_journald::layer() {
+        Ok(layer) => layer.boxed(),
+        Err(err) => {
+            eprintln!("Unable to open syslog: {err:?}");
+            plain_stderr_layer().boxed()
+        }
+    }
+}
+
+fn plain_stderr_layer<S>() -> impl tracing_subscriber::Layer<S>
+where
+    S: tracing::Subscriber,
+    S: for<'a> tracing_subscriber::registry::LookupSpan<'a>,
+{
+    let format = tracing_subscriber::fmt::format()
+        .with_level(false)
+        .without_time()
+        .with_target(false)
+        .compact();
+    tracing_subscriber::fmt::layer()
+        .event_format(format)
+        .with_writer(std::io::stderr)
+}
+
 /// Initialize default logger for CLI binaries
 pub fn init_cli_logger(
     env_var_name: &str,
@@ -144,17 +172,9 @@ pub fn init_cli_logger(
         }
     }
 
-    let format = tracing_subscriber::fmt::format()
-        .with_level(false)
-        .without_time()
-        .with_target(false)
-        .compact();
-
     let registry = tracing_subscriber::registry()
         .with(
-            tracing_subscriber::fmt::layer()
-                .event_format(format)
-                .with_writer(std::io::stderr)
+            plain_stderr_layer()
                 .with_filter(filter_fn(|metadata| {
                     !LogContext::exists() || *metadata.level() >= Level::ERROR
                 }))
-- 
2.39.2



_______________________________________________
pbs-devel mailing list
pbs-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2024-09-16 13:12 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-09-10 13:03 [pbs-devel] [PATCH] log: fallback to stderr if syslog not available Gabriel Goller
2024-09-12  9:29 ` Fiona Ebner
2024-09-12  9:38   ` Fabian Grünbichler
2024-09-12  9:50     ` Fiona Ebner
2024-09-16 13:12 ` [pbs-devel] applied: " Wolfgang Bumiller

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal