gpt4 book ai didi

.net - 正确使用应用程序配置文件中的 设置

转载 作者:行者123 更新时间:2023-12-02 00:37:42 24 4
gpt4 key购买 nike

我最近创建了一个 Windows 服务。它忠实地做的一件事是将任何错误记录到应用程序日志中。我有以下代码执行此操作:

Dim appLog = New System.Diagnostics.EventLog With {.Source = "MyService"}
appLog.WriteEntry(message, EventLogEntryType.Error, transactionID)

我的 app.config 中还有以下内容:

<system.diagnostics>
<sources>
<source name="MyService" switchName="DefaultSwitch">
<listeners>
<!--<add name="FileLog"/>-->
<add name="EventLog"/>
</listeners>
</source>
</sources>
<switches>
<add name="DefaultSwitch" value="Information" />
</switches>
<sharedListeners>
<!--<add name="FileLog"
type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"
initializeData="FileLogWriter"/>-->
<add name="EventLog" type="System.Diagnostics.EventLogTraceListener" initializeData="MyService"/>
</sharedListeners>
</system.diagnostics>

我希望我上面的代码即使没有以编程方式设置 EventLog 的 Source 属性也能正常工作,因为我已经在配置文件中定义了源。但是如果我删除 With {.Source = "MyService"},那么我会得到一个异常,它表示应该在调用 WriteEntry 方法之前设置 Source 属性。那么,配置 XML 中的内容的目的是什么?

最佳答案

幸运的是,我在开发其他应用程序时偶然发现了一个答案,或者至少是部分答案。使用 My.Application.Log 时,配置文件中的设置很重要目的。例如:My.Application.Log.WriteEntry(errMsg)将根据 app.config 中的设置写入文件或事件查看器。

因此,在这种情况下,EventLog不直接从代码调用类。这给了我额外的灵 active ,可以将日志格式从事件查看器“热交换”到文件,例如,无需更改任何代码或重新编译。我注意到的一件事是 <source> 的名称属性元素需要设置为“DefaultSource”。否则,不会记录事件。可能有一种方法可以改变它,但我认为没有必要,所以我没有进一步调查。希望这对某些人有用。

关于.net - 正确使用应用程序配置文件中的 <system.diagnostics> 设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3946001/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com