/// <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); }