using System; using System.Diagnostics; using System.IO; using System.Xml.Linq; namespace ArchestrAServices.Common; internal class ASBCustomLoggingConfigurationParser { public static void Parse(ConfiguredLogger logger) { if (logger == null) { return; } string uri = Path.Combine(Environment.CurrentDirectory, logger.ComponentName + ".logger.config"); try { XDocument xDocument = XDocument.Load(uri); if (xDocument == null) { return; } XElement xElement = xDocument.Element("configuration"); if (xElement == null) { return; } XElement xElement2 = xElement.Element("asb.diagnostics"); if (xElement2 != null) { XElement xElement3 = xElement2.Element("sources"); if (xElement3 != null) { ParseSources(logger, xElement3); } } } catch (Exception) { } } private static void ParseSources(ConfiguredLogger logger, XElement sourcesElement) { try { foreach (XElement item in sourcesElement.Elements("source")) { XAttribute xAttribute = item.Attribute("name"); XAttribute xAttribute2 = item.Attribute("switchValue"); if (xAttribute == null || xAttribute2 == null) { continue; } SourceLevels newLevel = SourceLevels.Off; try { newLevel = (SourceLevels)Enum.Parse(typeof(SourceLevels), xAttribute2.Value); } catch (ArgumentException) { } TraceSource traceSource = logger.ChangeSourceLevel(xAttribute.Value, newLevel); if (traceSource == null) { continue; } XElement xElement = item.Element("listeners"); if (xElement == null) { continue; } foreach (XElement item2 in xElement.Elements("add")) { XAttribute xAttribute3 = item2.Attribute("type"); item2.Attribute("traceOutputOptions"); XAttribute xAttribute4 = item2.Attribute("initializeData"); if (xAttribute3 != null) { string value = xAttribute3.Value; if (value == "aaLoggerETWListner" && xAttribute4 != null) { string value2 = xAttribute4.Value; traceSource.Listeners.Remove(value2); aaLoggerListner aaLoggerListner2 = new aaLoggerListner(value2, logger.ComponentName); aaLoggerListner2.Name = value2; traceSource.Listeners.Add(aaLoggerListner2); } } } } } catch (Exception) { } } }