我有一个名为appName的值,在应用程序配置中定义,用于存储应用程序的名称。应用程序通过数据库跟踪侦听器将日志写入数据库。我想要做的是让应用程序获取它的appName值并将defaultCategory设置为在运行时具有相同的值。我假设我还必须将现有类别重命名为appName的值。除了该类别的名称和defaultCategory的更改(重命名的)之外,我不想影响任何其他内容。
这是配置部分,TESTING是我想在运行时更改的值:
<loggingConfiguration name="" tracingEnabled="true" defaultCategory="TESTING">
...
<categorySources>
...
<add switchValue="All" name="TESTING">
<listeners>
<add name="Database Trace Listener" />
</listeners>
</add>
</categorySources>
我已经尝试过查找解决方案/示例,但是对于最接近的事情,我发现重写整个部分,我宁愿避免这样做。
答案 0 :(得分:1)
Enterprise Library支持单个应用程序块的运行时编程配置或设计时声明性配置。但开箱即用,您无法轻松地将这两种方法混合用于同一应用程序块。
您提到了一种方法,即修改配置并将其写回。
另一种方法是在运行时以编程方式设置所有配置。
如果您使用外部配置文件(例如app.config / web.config中指向实际Enterprise Library配置的FileConfigurationSource),则可以使用的替代方法是加载配置信息,然后在内存中进行修改。使用外部配置文件的原因是在尝试修改配置信息时避免只读配置异常。
最后一种方法在文章Enterprise Library Programmatic Configuration中列出。