Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
        /// <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);
        }