Я новичок в Rust и использую библиотеку log4rs для создания сообщений журнала, и хотел бы вставить уникальную переменную для каждого хоста в каждое записываемое сообщение журнала.
Я видел, что предоставленный кодировщик шаблонов позволяет мне вставлять произвольную переменную, изменяя MDC, но мое приложение создает несколько потоков, и я беспокоюсь о том, чтобы забыть передать/инициализировать MDC в одном из этих потоков в будущей разработке. .
Есть ли способ вставить произвольную переменную для каждого хоста во все сообщения журнала?
Я использую Config Builder, а не конфигурацию YAML.
Я понял, что могу сгенерировать свою строку кодировщика как переменную для передачи в PatternEncoder.
Например,
let mut encoder_string = String::from("{d(%d %b %Y %H:%M:%S%.3f)} {l}");
let hostvar = <<function to get per-host variable>>;
encoder_string.push_str(&hostvar);
encoder_string.push_str("{P} {T} - {m}{n}");
// See https://docs.rs/log4rs/*/log4rs/encode/pattern/index.html
let encoder = Box::new(PatternEncoder::new(
&encoder_string,
));