diff --git a/src/platform/logger.rs b/src/platform/logger.rs index 0e8ac5dc0c..4101353e9e 100644 --- a/src/platform/logger.rs +++ b/src/platform/logger.rs @@ -2,7 +2,7 @@ use core::{fmt, str::FromStr}; use crate::{c_str::CStr, io::prelude::*, sync::Mutex}; -use alloc::string::String; +use alloc::string::{String, ToString}; use log::{Metadata, Record}; const DEFAULT_LOG_LEVEL: log::LevelFilter = log::LevelFilter::Info; @@ -23,6 +23,10 @@ pub unsafe fn init() { logger = logger.with_output(OutputBuilder::stderr().with_filter(level).build()); } } + if let Some(name) = CStr::from_nullable_ptr(crate::platform::program_invocation_short_name) + { + logger = logger.with_process_name(name.to_str().unwrap_or("").to_string()); + } } if logger.enable().is_err() { log::error!("Logger already initialized"); diff --git a/src/start.rs b/src/start.rs index 466c540894..2e67df5b4b 100644 --- a/src/start.rs +++ b/src/start.rs @@ -115,7 +115,6 @@ extern "C" fn init_array() { unsafe { crate::pthread::init(); - crate::platform::logger::init(); init_complete = true } } @@ -218,8 +217,8 @@ pub unsafe extern "C" fn relibc_start_v1( let auxvs = unsafe { get_auxvs(sp.auxv().cast()) }; unsafe { crate::platform::init(auxvs) }; - init_array(); + unsafe { crate::platform::logger::init() }; // Run preinit array {