using System.Collections.Generic; using System.Diagnostics; namespace ArchestrAServices.Common; public class ConfiguredLogger { private Dictionary TraceSourceMap; public string ComponentName { get; set; } public ConfiguredLogger(string componentName) { TraceSourceMap = new Dictionary(); ComponentName = componentName; AddCustomTraceSource("DataFlowLogs", SvcTrace.DiagData, "LogTraceType"); AddCustomTraceSource("ControlFlowLogs", SvcTrace.DiagControl, "LogInfoType"); AddCustomTraceSource("CommandLogs", SvcTrace.DiagCommand, "ASBCommand"); AddCustomTraceSource("ExceptionLogs", SvcTrace.DiagException, "ASBException"); AddCustomTraceSource("DiagnosticsLogs", SvcTrace.DiagDiagnostics, "ASBDiagnostic"); } public void AddCustomTraceSource(string name, TraceSource source, string logFlag, SourceLevels newLevel = SourceLevels.Off) { TraceSourceMap[name] = source; bool flag = false; foreach (TraceListener listener in source.Listeners) { if (listener.Name == logFlag) { flag = true; break; } } source.Listeners.Remove("Default"); if (!flag) { aaLoggerListner aaLoggerListner2 = new aaLoggerListner(logFlag, ComponentName); aaLoggerListner2.Name = logFlag; aaLoggerListner2.SourceLevel = newLevel; source.Listeners.Add(aaLoggerListner2); if (source.Switch == null || source.Switch.DisplayName != name) { source.Switch = new SourceSwitch(name); } source.Switch.Level = SourceLevels.All; } } public TraceSource ChangeSourceLevel(string name, SourceLevels newLevel) { TraceSource value = null; if (TraceSourceMap.TryGetValue(name, out value) && value.Switch != null) { value.Switch.Level = newLevel; } return value; } public void ReloadConfiguration() { ASBCustomLoggingConfigurationParser.Parse(this); } }