macro_rules! trace {
    ( $($args:tt)+ ) => { ... };
}
Available on (crate features logging or metrics or telemetry or tracing) and crate feature logging only.
Expand description

Log trace level record.

If duplicate fields are specified for the record then the last one takes precedence and overwrites the value of the previous one.

Certain added fields may not be present in the resulting logs if LoggingSettings::redact_keys is used.

§Examples

use foundations::telemetry::TelemetryContext;
use foundations::telemetry::log::{self, TestLogRecord};
use foundations::telemetry::settings::Level;

// Test context is used for demonstration purposes to show the resulting log records.
let ctx = TelemetryContext::test();
let _scope = ctx.scope();

// Simple log message
log::trace!("Hello world!");

// Macro also accepts format arguments
log::trace!("The values are: {}, {}", 42, true);

// Fields key-value pairs can be added to log record, by separating the format message
// and fields by `;`.
log::trace!("Answer: {}", 42; "foo" => "bar", "baz" => 1337);

assert_eq!(*ctx.log_records(), &[
    TestLogRecord {
        level: Level::Trace,
        message: "Hello world!".into(),
        fields: vec![]
    },
    TestLogRecord {
        level: Level::Trace,
        message: "The values are: 42, true".into(),
        fields: vec![]
    },
    TestLogRecord {
        level: Level::Trace,
        message: "Answer: 42".into(),
        fields: vec![
            ("baz".into(), "1337".into()),
            ("foo".into(), "bar".into())
        ]
    }
]);