1use ic_logging::{EntryInput, Filter, Level, Limits, Log, PageRequest};
4use std::num::NonZeroUsize;
5
6fn main() {
7 let mut log = Log::new(Limits {
8 max_entries: NonZeroUsize::new(8).expect("positive capacity"),
9 max_message_bytes: 32,
10 max_label_bytes: 16,
11 });
12 for (created_at_secs, level, message) in [
13 (10, Level::Info, "delivery accepted"),
14 (
15 11,
16 Level::Warn,
17 "provider reply is still unknown; reconcile before retry",
18 ),
19 (12, Level::Ok, "original delivery reconciled"),
20 ] {
21 log.append(EntryInput {
22 created_at_secs,
23 level,
24 source: "worker",
25 topic: Some("delivery"),
26 message,
27 })
28 .expect("valid bounded entry");
29 }
30 let page = log.page(
31 Filter::default(),
32 PageRequest {
33 before: None,
34 max_results: NonZeroUsize::new(8).expect("positive results"),
35 max_scanned: NonZeroUsize::new(8).expect("positive scan"),
36 },
37 );
38 for entry in page.entries {
39 println!("{} {:?}: {}", entry.sequence, entry.level, entry.message);
40 }
41 let batch = log.prune_expired(16, 5, 1);
42 assert_eq!(batch.removed, 1);
43 assert_eq!(log.next_expiry_secs(5), Some(17));
44}