(log: &openshell_core::proto::SandboxLogLine)
| 7494 | } |
| 7495 | |
| 7496 | fn print_log_line(log: &openshell_core::proto::SandboxLogLine) { |
| 7497 | let source = if log.source.is_empty() { |
| 7498 | "gateway" |
| 7499 | } else { |
| 7500 | &log.source |
| 7501 | }; |
| 7502 | let secs = log.timestamp_ms / 1000; |
| 7503 | let millis = log.timestamp_ms % 1000; |
| 7504 | if log.fields.is_empty() { |
| 7505 | println!( |
| 7506 | "[{secs}.{millis:03}] [{source:<7}] [{:<5}] [{}] {}", |
| 7507 | log.level, log.target, log.message |
| 7508 | ); |
| 7509 | } else { |
| 7510 | let mut fields_str = String::new(); |
| 7511 | let mut entries: Vec<_> = log.fields.iter().collect(); |
| 7512 | entries.sort_by_key(|(k, _)| k.as_str()); |
| 7513 | for (k, v) in entries { |
| 7514 | if !fields_str.is_empty() { |
| 7515 | fields_str.push(' '); |
| 7516 | } |
| 7517 | fields_str.push_str(k); |
| 7518 | fields_str.push('='); |
| 7519 | fields_str.push_str(v); |
| 7520 | } |
| 7521 | println!( |
| 7522 | "[{secs}.{millis:03}] [{source:<7}] [{:<5}] [{}] {} {}", |
| 7523 | log.level, log.target, log.message, fields_str |
| 7524 | ); |
| 7525 | } |
| 7526 | } |
| 7527 | |
| 7528 | // --------------------------------------------------------------------------- |
| 7529 | // Network rule commands |
no test coverage detected