MCPcopy Index your code
hub / github.com/PowerShell/DSC / enable_tracing

Function enable_tracing

dsc/src/util.rs:312–434  ·  view source on GitHub ↗
(trace_level_arg: Option<&TraceLevel>, trace_format_arg: Option<&TraceFormat>)

Source from the content-addressed store, hash-verified

310
311#[allow(clippy::too_many_lines)]
312pub fn enable_tracing(trace_level_arg: Option<&TraceLevel>, trace_format_arg: Option<&TraceFormat>) {
313
314 let mut policy_is_used = false;
315 let mut tracing_setting = TracingSetting::default();
316
317 let default_filter = EnvFilter::try_from_default_env()
318 .or_else(|_| EnvFilter::try_new("warn"))
319 .unwrap_or_default()
320 .add_directive(Level::WARN.into());
321 let default_indicatif_layer = IndicatifLayer::new();
322 let default_layer = tracing_subscriber::fmt::Layer::default().with_writer(default_indicatif_layer.get_stderr_writer());
323 let default_fmt = default_layer
324 .with_ansi(true)
325 .with_level(true)
326 .boxed();
327 let default_subscriber = tracing_subscriber::Registry::default().with(default_fmt).with(default_filter).with(default_indicatif_layer);
328 let default_guard = tracing::subscriber::set_default(default_subscriber);
329
330 // read setting/policy from files
331 if let Ok(v) = get_setting("tracing") {
332 if v.policy != serde_json::Value::Null {
333 match serde_json::from_value::<TracingSetting>(v.policy) {
334 Ok(v) => {
335 tracing_setting = v;
336 policy_is_used = true;
337 },
338 Err(e) => { error!("{e}"); }
339 }
340 } else if v.setting != serde_json::Value::Null {
341 match serde_json::from_value::<TracingSetting>(v.setting) {
342 Ok(v) => {
343 tracing_setting = v;
344 },
345 Err(e) => { error!("{e}"); }
346 }
347 }
348 } else {
349 error!("{}", t!("util.failedToReadTracingSetting"));
350 }
351
352 // override with DSC_TRACE_LEVEL env var if permitted
353 if tracing_setting.allow_override && let Ok(level) = env::var(DSC_TRACE_LEVEL) {
354 tracing_setting.level = match level.to_ascii_uppercase().as_str() {
355 "ERROR" => TraceLevel::Error,
356 "WARN" => TraceLevel::Warn,
357 "INFO" => TraceLevel::Info,
358 "DEBUG" => TraceLevel::Debug,
359 "TRACE" => TraceLevel::Trace,
360 _ => {
361 warn!("{}: '{level}'", t!("util.invalidTraceLevel"));
362 TraceLevel::Warn
363 }
364 }
365 }
366
367 // command-line args override setting value, but not policy
368 if !policy_is_used {
369 if let Some(v) = trace_level_arg {

Callers 1

mainFunction · 0.70

Calls 4

get_settingFunction · 0.85
as_strMethod · 0.80
defaultFunction · 0.50
newFunction · 0.50

Tested by

no test coverage detected