autopush_common/
logging.rs1use std::io;
2
3use gethostname::gethostname;
4use slog::{self, Drain};
5use slog_mozlog_json::MozLogJson;
6
7use crate::errors::Result;
8
9pub fn init_logging(json: bool, name: &str, version: &str) -> Result<()> {
10 let logger = if json {
11 let hostname = gethostname().to_string_lossy().to_string();
12
13 let drain = MozLogJson::new(io::stdout())
14 .logger_name(format!("{name}-{version}"))
15 .msg_type(format!("{name}:log"))
16 .hostname(hostname)
17 .build()
18 .fuse();
19 let drain = slog_envlogger::new(drain);
20 let drain = slog_async::Async::new(drain).build().fuse();
21 slog::Logger::root(drain, slog_o!())
22 } else {
23 let decorator = slog_term::TermDecorator::new().build();
24 let drain = slog_term::FullFormat::new(decorator).build().fuse();
25 let drain = slog_envlogger::new(drain);
26 let drain = slog_async::Async::new(drain).build().fuse();
27 slog::Logger::root(drain, slog_o!())
28 };
29 slog_scope::set_global_logger(logger).cancel_reset();
34 slog_stdlog::init().ok();
35 Ok(())
36}
37
38pub fn reset_logging() {
39 let logger = slog::Logger::root(slog::Discard, o!());
40 slog_scope::set_global_logger(logger).cancel_reset();
41}
42
43pub fn init_test_logging() {
48 let decorator = slog_term::PlainSyncDecorator::new(slog_term::TestStdoutWriter);
49 let drain = std::sync::Mutex::new(slog_term::FullFormat::new(decorator).build()).fuse();
50 let logger = slog::Logger::root(drain, slog::o!());
51 slog_scope::set_global_logger(logger).cancel_reset();
52 slog_stdlog::init().ok();
53}
54
55pub fn parallelism_banner() -> String {
57 format!(
58 "available_parallelism: {:?} num_cpus: {} num_cpus (phys): {}",
59 std::thread::available_parallelism(),
60 num_cpus::get(),
61 num_cpus::get_physical()
62 )
63}