2009-01-26 85 views
2

我正在改装旧的vb.net应用程序,以使其符合Vista中的LUA原则。到目前为止,应用程序已经使用了大量的日志记录机制,但核心的一个涉及如果文件夹存在,将日志写入c:\ temp \。我想用更标准的日志记录机制替换当前的日志记录。如何以编程方式确定VB应用程序日志的位置?

这是VB,我决定尝试使用My.Application.Log与app.config一起使用,并且尽可能地发挥作用(尽管我没有想到它会转储到漫游配置文件中)。不幸的是,用户习惯使用来自日志的信息进行故障排除,并且在提交错误时发送日志,并且移动该日志隐藏它很好。

我的想法是通过在应用程序的用户界面中添加指向它的链接或者至少包含它的文件夹,使日志更容易访问。但是,我不知道如何确定链接将指向的位置。

编辑(用户互动,增加信息):

我的配置文件是或多或少内置默认:

<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。

回答

1

我相信这是可配置的。它可以在machine.config文件中配置,或者您可以在应用程序配置文件中覆盖它 - 您将要这样做,以便您可以控制它并创建一个指向它的链接。

您将需要将一个FileLogTraceListener添加到app.config。

它在部分。您可以在initializeData属性中指定文件名。

从MSDN更多的文档:

0

一种可能性可能是完全跳过My.Application.Log并直接转到System.Diagnostics.TraceListener s。我可以选择我自己的日志文件夹,我一定会知道它的位置。

+1

如果可能的话,我宁愿坚持使用VB中更多的VB-y解决方案。 – 2009-01-26 15:21:10

0

我使用的风扇内置的日志跟踪对象。此外,如果您需要保留使用临时文件的旧行为,请参阅System.IO.Path.GetTempFileName()

相关问题