[pbs-devel] [RFC proxmox 2/2] proxmox-log: added tracing infra

Gabriel Goller g.goller at proxmox.com
Fri Oct 13 14:36:22 CEST 2023


Some things that are gonna get fixed with v2:

On 10/11/23 16:01, Gabriel Goller wrote:
> [..]
> +
> +tokio::task_local! {
> +    pub static LOGGER: RefCell<Option<FileLogger>>;
> +    pub static WARN_COUNTER: RefCell<Option<u64>>;
> +}
Move the `task_local!` stuff to the lib.rs file, that is
probably cleaner...
> [..]
> +
> +pub fn init_logger(
> +    env_var_name: &str,
> +    default_log_level: LevelFilter,
> +    application_name: &str,
> +) -> Result<(), anyhow::Error> {
> +    let mut log_level = default_log_level;
> +    if let Ok(v) = env::var(env_var_name) {
> +        if let Ok(l) = v.parse::<LevelFilter>() {
> +            log_level = l;
> +        }
> +    }
> +    let registry = tracing_subscriber::registry()
> +        .with(FilelogLayer::new().with_filter(filter_fn(|metadata| {
> +            metadata.fields().field("tasklog").is_some()
> +        })))
> +        .with(SyslogLayer::new(application_name.to_string()).with_filter(log_level));
> +
We also need the `.with_filter(log_level)` on the `FilelogLayer`, so
that the PBS_LOG variable also sets the log level on the task logs.
> +    tracing::subscriber::set_global_default(registry)?;
> +
> +    LogTracer::init()?;

Use `init_with_filter` here, so that we also set the loglevel on the 
(underlying) `log`
implementation. Like that a `log::info` call for example doesn't even
forward the message to `tracing`.

> +    Ok(())
> +}
> [..]
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.proxmox.com/pipermail/pbs-devel/attachments/20231013/c2f4d437/attachment.htm>


More information about the pbs-devel mailing list