Tracing: print in different timezone?

I am having difficulty finding info on how can I configure the timezone with which the timestamps emitted by tracing-log are printed.

Does anyone have a pointer?

If you're using tracing-log to capture log events in tracing I think this is the module in tracing-subscriber you want.

1 Like

Yes I am using that, thank you.

Would you mind me giving me an example if it's not too much trouble? I am reading the docs right now and will likely decipher them soon enough. For the moment I can't seem to figure out how to supply a non-UTC and non-local offset to feed to the with_timer method of Builder.

Hmm, let me try with time::UtcOffset.from_hms.

I'm currently (inadvisedly[1]) doing something like

            "[year]-[month]-[day] [hour repr:24]:[minute]:[second]::[subsecond digits:4]"

in a project I had handy

  1. LocalOffset is cursed and you shouldn't use it, which is why it's behind a feature flag AND requires an additional opt in via RUSTFLAGS ↩︎

1 Like

Thank you! I ended up with:

    let offset = UtcOffset::from_hms(-8, 0, 0).expect("should get PST offset");
    let time_format = time::format_description::parse(
        "[year]-[month]-[day]T[hour]:[minute]:[second].[subsecond digits:6]",
    .expect("format string should be valid");
    let timer = OffsetTime::new(offset, time_format);

    let log_layer = tracing_subscriber::fmt::layer()


And it's working fine. Thanks again.


FYI, you can avoid the overhead of parsing the format description at runtime by using a macro. Just change time::format_description::parse to time::macros::format_description! and remove the .expect("…") call. You can similarly replace the UTC offset with time::macros::offset!(-8).