/// <summary> /// Gets existing logger index. /// </summary> /// <param name="loggerSettings">Logger settings.</param> /// <returns>Index of given logger settings.</returns> public int GetExistingLoggerIndex(LoggerSettings loggerSettings) { var existingLoggerIndex = -1; for (int i = 0; i < LoggerSettingsList.Count; i++) { var logger = LoggerSettingsList[i]; if (logger.FriendlyName != null && loggerSettings.FriendlyName != null && logger.FriendlyName.Equals(loggerSettings.FriendlyName, StringComparison.OrdinalIgnoreCase)) { existingLoggerIndex = i; break; } if (logger.Uri?.ToString() != null && loggerSettings.Uri?.ToString() != null && logger.Uri.ToString().Equals(loggerSettings.Uri.ToString(), StringComparison.OrdinalIgnoreCase)) { existingLoggerIndex = i; break; } } return(existingLoggerIndex); }
/// <summary> /// Reads logger settings list from runSettings /// </summary> /// <param name="reader"> /// The reader. /// </param> /// <param name="loggerSettingName"> /// Logger setting name. /// </param> /// <returns> /// LoggerSettings List /// </returns> private static List <LoggerSettings> ReadListElementFromXml(XmlReader reader, string loggerSettingName) { // Validation. XmlRunSettingsUtilities.ThrowOnHasAttributes(reader); var elementName = reader.Name; var empty = reader.IsEmptyElement; var settings = new List <LoggerSettings>(); // Move to next node reader.Read(); // Return empty settings if previous element is empty. if (empty) { return(settings); } // Read inner nodes. while (reader.NodeType == XmlNodeType.Element) { if (reader.Name.Equals(loggerSettingName, StringComparison.OrdinalIgnoreCase)) { settings.Add(LoggerSettings.FromXml(reader)); } else { throw new SettingsException( string.Format( CultureInfo.CurrentCulture, Resources.Resources.InvalidSettingsXmlElement, elementName, reader.Name)); } } return(settings); }
internal static LoggerSettings FromXml(XmlReader reader) { var elementName = reader.Name; var empty = reader.IsEmptyElement; var settings = new LoggerSettings { IsEnabled = true }; // Read attributes. if (reader.HasAttributes) { while (reader.MoveToNextAttribute()) { switch (reader.Name.ToLowerInvariant()) { case Constants.LoggerFriendlyNameLower: settings.FriendlyName = reader.Value; break; case Constants.LoggerUriName: try { settings.Uri = new Uri(reader.Value); } #if NETSTANDARD1_0 catch #else catch (UriFormatException) #endif { throw new SettingsException( string.Format( CultureInfo.CurrentCulture, Resources.Resources.InvalidUriInSettings, reader.Value, elementName)); } break; case Constants.LoggerAssemblyQualifiedNameLower: settings.AssemblyQualifiedName = reader.Value; break; case Constants.LoggerCodeBaseLower: settings.CodeBase = reader.Value; break; case Constants.LoggerEnabledName: bool.TryParse(reader.Value, out var value); settings.IsEnabled = value; break; default: throw new SettingsException( string.Format( CultureInfo.CurrentCulture, Resources.Resources.InvalidSettingsXmlAttribute, elementName, reader.Name)); } } } // Check for required attributes. if (string.IsNullOrWhiteSpace(settings.FriendlyName) && string.IsNullOrWhiteSpace(settings.Uri?.ToString()) && string.IsNullOrWhiteSpace(settings.AssemblyQualifiedName)) { throw new SettingsException( string.Format( CultureInfo.CurrentCulture, Resources.Resources.MissingLoggerAttributes, elementName, Constants.LoggerFriendlyName)); } // Move to next node. reader.Read(); // Return empty settings if previous element is empty. if (empty) { return(settings); } // Read inner elements. while (reader.NodeType == XmlNodeType.Element) { switch (reader.Name.ToLowerInvariant()) { #if !NETSTANDARD1_0 case Constants.LoggerConfigurationNameLower: var document = new XmlDocument(); var element = document.CreateElement(reader.Name); element.InnerXml = reader.ReadInnerXml(); settings.Configuration = element; break; #endif default: throw new SettingsException( string.Format( CultureInfo.CurrentCulture, Resources.Resources.InvalidSettingsXmlElement, elementName, reader.Name)); } } reader.ReadEndElement(); return(settings); }