我正在改编旧的vb.net应用程序,使其符合Vista中的LUA原则。到目前为止,该应用程序已经使用了大量的日志记录机制,但核心日志涉及将日志写入c:\ temp \,如果该文件夹存在。我想用更标准的日志记录机制替换当前的日志记录。
这是VB,我决定尝试将My.Application.Log
与app.config一起使用,并尽可能地工作(尽管我没想到它会转储到漫游配置文件中)。不幸的是,用户习惯于使用日志中的信息进行故障排除,以及在提交错误时发送登录,并且移动此日志会很好地隐藏它。
我的想法是通过在应用程序的UI中添加一个链接,或至少添加到包含它的文件夹,使日志更容易访问。但是,我不知道如何确定链接指向的位置。
编辑(添加信息):
我的配置文件或多或少是内置默认值:
<system.diagnostics>
<sources>
<source name="Error Log" switchName="DefaultSwitch">
<listeners>
<add name="FileLog"/>
</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"/>
</sharedListeners>
</system.diagnostics>
我想在配置文件中设置FileLogTraceListener上的一些属性。 MaxSize,例如(之前存在最大尺寸行为)。但是,我没有看到任何调用此文档的文档。 (在FileLogTraceListener page的基础上有一些社区内容表明我应该能够这样做,所以我会检查一下。如果我找到一些官方文件支持,我会更舒服。 )
如果我这样做,我应该能够遍历My.Application.Log
上的跟踪侦听器集合,并且只链接到第一个FileLogTraceListener的FullLogFileName。
答案 0 :(得分:1)
解决方案是使用Microsoft.VisualBasic.Logging.FileLogTraceListener
。此跟踪侦听器支持通过其FullLogFileName
属性检索完整日志路径,以及通过Location
属性自定义位置。
答案 1 :(得分:1)
我相信这是可配置的。它可以在machine.config文件中配置,或者您可以在应用程序配置文件中覆盖它 - 您将要执行此操作,以便您可以控制它并创建指向它的链接。
您需要在app.config中添加FileLogTraceListener
。
它位于system.diagnostics\sharedListeners
部分。您可以在initializeData
属性中指定文件名。
来自MSDN的更多文档:
答案 2 :(得分:0)
一种可能性是完全跳过My.Application.Log
并直接转到System.Diagnostics.TraceListener
。我可以选择我自己的日志文件夹,我肯定知道它的位置。
答案 3 :(得分:0)
我喜欢使用内置的Trace对象进行日志记录。此外,如果您需要保留使用临时文件的旧行为,请查看System.IO.Path.GetTempFileName()
。