I'm using the logging application block (LAB), and I'd like to provide a default config section if the app's config file doesn't contain one for the LAB. I use this code to see if a LAB config section already exists:
LoggingSettings settings = LoggingSettings.GetLoggingSettings(ConfigurationSourceFactory.Create());
if (settings != null) return Logger.Writer;
If a LAB config section doesn't exist, I read my default LAB config info from an embedded resource, save it to a temp file, and then use a FileConfigurationSource to load it and create a LogWriter.
string tempConfigFilePath = Path.GetTempFileName();
FileConfigurationSource configSource = new FileConfigurationSource(tempConfigFilePath);
LogWriterFactory factory = new LogWriterFactory(configSource);
LogWriter result = factory.Create();
This works, but I hate having to write the config info out to a temp file and delete it every time. Is there a way to create a configuration source that reads from an XmlReader?
I tried manually creating a LoggingSettings instance and calling its ReadXml method, but that never worked. All of the System.Configuration classes expect to read from a file. I just can't find a way to get a LoggingSettings class (which inherits from ConfigurationSection)
by using an XmlReader. If I could do that, then I could use DictionaryConfigurationSource to return my default LoggingSettings section.
Thanks in advance for any help.
If you don't mind specifying your default config in code, you can use a DictionaryConfigurationSource just like many tests do. Just look for the references to this class in the Logging test project for examples.