Exemple #1
0
        /// <summary>
        /// Configures the logging settings according to RoleEnvironment.
        /// </summary>
        /// <returns>returns LoggingSettings.</returns>
        public static LoggingSettings GetLoggingSettings()
        {
            var loggingStream = File.OpenRead(Path.Combine(GetValidAssemblyPath(), "Logging.config"));
            XmlReaderSettings readerSettings = new XmlReaderSettings();

            readerSettings.IgnoreWhitespace = true;
            var xmlReader = XmlReader.Create(loggingStream, readerSettings);

            XDocument loggingSettingsDoc = XDocument.Load(xmlReader);

            if (RoleEnvironment.IsAvailable)
            {
                var fileListeners = loggingSettingsDoc.Root.Descendants("listeners").Elements("add").Where(obj => obj.Attribute("type") != null && obj.Attribute("type").Value.Contains("Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.FlatFileTraceListener"));
                foreach (var fileListener in fileListeners)
                {
                    var listenerName = fileListener.Attribute("name").Value;
                    var listeners    = loggingSettingsDoc.Root.Descendants("listeners").Elements("add").Where(obj => obj.Attribute("type") == null && obj.Attribute("name").Value == listenerName);
                    listeners.Remove();
                }

                fileListeners.Remove();
            }
            else
            {
                var azureListeners = loggingSettingsDoc.Root.Descendants("listeners").Elements("add").Where(obj => obj.Attribute("type") != null && obj.Attribute("type").Value.Contains("Microsoft.WindowsAzure"));
                foreach (var azureListener in azureListeners)
                {
                    var listenerName = azureListener.Attribute("name").Value;
                    var listeners    = loggingSettingsDoc.Root.Descendants("listeners").Elements("add").Where(obj => obj.Attribute("type") == null && obj.Attribute("name").Value == listenerName);
                    listeners.Remove();
                }

                azureListeners.Remove();
            }

            StringBuilder settingsBuilder = new StringBuilder();

            using (XmlWriter finalWriter = XmlWriter.Create(settingsBuilder))
            {
                loggingSettingsDoc.WriteTo(finalWriter);
                finalWriter.Flush();
            }

            LoggingSettings settings = new LoggingSettings();

            settings.ReadXml(XmlReader.Create(new StringReader(settingsBuilder.ToString())));

            return(settings);
        }