Log output from a process as traces. # Arguments `process_name` - The name of the process `process_id` - The ID of the process `trace_line` - The stderr line from the process
(process_id: &u32, trace_line: &'a str)
| 1179 | /// * `process_id` - The ID of the process |
| 1180 | /// * `trace_line` - The stderr line from the process |
| 1181 | pub fn log_stderr_line<'a>(process_id: &u32, trace_line: &'a str) -> &'a str |
| 1182 | { |
| 1183 | if !trace_line.is_empty() |
| 1184 | { |
| 1185 | if let Ok(trace_object) = serde_json::from_str::<Trace>(trace_line) { |
| 1186 | let mut include_target = trace_object.level == TraceLevel::Debug || trace_object.level == TraceLevel::Trace; |
| 1187 | let target = if let Some(t) = trace_object.target.as_deref() { t } else { |
| 1188 | include_target = false; |
| 1189 | "" |
| 1190 | }; |
| 1191 | let line_number = if let Some(l) = trace_object.line_number { l } else { |
| 1192 | include_target = false; |
| 1193 | 0 |
| 1194 | }; |
| 1195 | let trace_message = if include_target { |
| 1196 | format!("PID {process_id}: {target}: {line_number}: {}", trace_object.fields.message) |
| 1197 | } else { |
| 1198 | format!("PID {process_id}: {}", trace_object.fields.message) |
| 1199 | }; |
| 1200 | match trace_object.level { |
| 1201 | TraceLevel::Error => { |
| 1202 | error!(trace_message); |
| 1203 | }, |
| 1204 | TraceLevel::Warn => { |
| 1205 | warn!(trace_message); |
| 1206 | }, |
| 1207 | TraceLevel::Info => { |
| 1208 | info!(trace_message); |
| 1209 | }, |
| 1210 | TraceLevel::Debug => { |
| 1211 | debug!(trace_message); |
| 1212 | }, |
| 1213 | TraceLevel::Trace => { |
| 1214 | trace!(trace_message); |
| 1215 | }, |
| 1216 | } |
| 1217 | } |
| 1218 | else if let Ok(json_obj) = serde_json::from_str::<Value>(trace_line) { |
| 1219 | if let Some(msg) = json_obj.get("error") { |
| 1220 | error!("PID {process_id}: {}", msg.as_str().unwrap_or_default()); |
| 1221 | } else if let Some(msg) = json_obj.get("warn") { |
| 1222 | warn!("PID {process_id}: {}", msg.as_str().unwrap_or_default()); |
| 1223 | } else if let Some(msg) = json_obj.get("info") { |
| 1224 | info!("PID {process_id}: {}", msg.as_str().unwrap_or_default()); |
| 1225 | } else if let Some(msg) = json_obj.get("debug") { |
| 1226 | debug!("PID {process_id}: {}", msg.as_str().unwrap_or_default()); |
| 1227 | } else if let Some(msg) = json_obj.get("trace") { |
| 1228 | trace!("PID {process_id}: {}", msg.as_str().unwrap_or_default()); |
| 1229 | } else { |
| 1230 | // the line is a valid json, but not one of standard trace lines - return it as filtered stderr_line |
| 1231 | trace!("PID {process_id}: {trace_line}"); |
| 1232 | return trace_line; |
| 1233 | } |
| 1234 | } else { |
| 1235 | // the line is not a valid json - return it as filtered stderr_line |
| 1236 | trace!("PID {process_id}: {}", trace_line); |
| 1237 | return trace_line; |
| 1238 | } |
no test coverage detected