Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2bfe5169 authored by Sonny Sasaka's avatar Sonny Sasaka
Browse files

Floss: Add --log-output to btadapterd

Similar to btmanagerd, this adds `--log-output` to select whether
syslog or stderr is used for Rust's log output.

Also forwards GD debug flag if `--debug` is given.

Bug: 228905413
Tag: #floss
Test: Manual - Run btadapterd on Linux

Change-Id: I56cf3cb684b62ec2fdb5bdb50cf66abdaaf014fc
parent 3bea7365
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -14,6 +14,7 @@ dbus_macros = { path = "../dbus_projection/dbus_macros" }
dbus = "0.9.2"
dbus-crossroads = "0.4.0"
dbus-tokio = "0.7.3"
env_logger = "0.8.3"
futures = "0.3.13"
log = "0.4.14"
num-traits = "*"
+30 −11
Original line number Diff line number Diff line
@@ -46,9 +46,18 @@ fn main() -> Result<(), Box<dyn Error>> {
        )
        .arg(Arg::with_name("debug").long("debug").short("d").help("Enables debug level logs"))
        .arg(Arg::from_usage("[init-flags] 'Fluoride INIT_ flags'").multiple(true))
        .arg(
            Arg::with_name("log-output")
                .long("log-output")
                .takes_value(true)
                .possible_values(&["syslog", "stderr"])
                .default_value("syslog")
                .help("Select log output"),
        )
        .get_matches();

    let is_debug = matches.is_present("debug");
    let log_output = matches.value_of("log-output").unwrap_or("syslog");

    let adapter_index = match matches.value_of("hci") {
        Some(idx) => idx.parse::<i32>().unwrap_or(0),
@@ -61,9 +70,19 @@ fn main() -> Result<(), Box<dyn Error>> {
        None => vec![],
    };

    // Set GD debug flag if debug is enabled.
    if is_debug {
        init_flags.push(String::from("INIT_logging_debug_enabled_for_all=true"));
    }

    // Forward --hci to Fluoride.
    init_flags.push(format!("--hci={}", adapter_index));

    let level_filter = if is_debug { LevelFilter::Debug } else { LevelFilter::Info };

    if log_output == "stderr" {
        env_logger::Builder::new().filter(None, level_filter).init();
    } else {
        let formatter = Formatter3164 {
            facility: Facility::LOG_USER,
            hostname: None,
@@ -72,9 +91,9 @@ fn main() -> Result<(), Box<dyn Error>> {
        };

        let logger = syslog::unix(formatter).expect("could not connect to syslog");
    let _ = log::set_boxed_logger(Box::new(BasicLogger::new(logger))).map(|()| {
        log::set_max_level(if is_debug { LevelFilter::Debug } else { LevelFilter::Info })
    });
        let _ = log::set_boxed_logger(Box::new(BasicLogger::new(logger)))
            .map(|()| log::set_max_level(level_filter));
    }

    let (tx, rx) = Stack::create_channel();