load meta/payload if needed during logging

In some cases (eg: initial spool -> expiration) we don't have
any metadata loaded, causing the logs to say that the metadata
wasn't loaded.

This commit loads it as needed.
This commit is contained in:
Wez Furlong
2023-04-21 12:51:16 -07:00
parent 217a9ba09f
commit ea8a8f7bb2
+6 -2
View File
@@ -232,7 +232,7 @@ impl Logger {
}
}
pub fn extract_fields(
pub async fn extract_fields(
&self,
msg: &Message,
) -> (HashMap<String, Value>, HashMap<String, Value>) {
@@ -240,6 +240,8 @@ impl Logger {
let mut meta = HashMap::new();
if !self.headers.is_empty() {
msg.load_data_if_needed().await.ok();
let mut all_headers: HashMap<String, Vec<Value>> = HashMap::new();
for (name, value) in msg.get_all_headers().unwrap_or_else(|_| vec![]) {
all_headers
@@ -297,6 +299,8 @@ pub async fn log_disposition(args: LogDisposition<'_>) {
if let Some(logger) = Logger::get() {
let mut feedback_report = None;
msg.load_meta_if_needed().await.ok();
if kind == RecordType::Reception {
if let Some(RelayDisposition { log_arf: true, .. }) = relay_disposition {
if let Ok(Some(report)) = msg.parse_rfc5965() {
@@ -310,7 +314,7 @@ pub async fn log_disposition(args: LogDisposition<'_>) {
return;
}
let (headers, meta) = logger.extract_fields(&msg);
let (headers, meta) = logger.extract_fields(&msg).await;
let record = JsonLogRecord {
kind,