代码之家  ›  专栏  ›  技术社区  ›  Greg D

如何以编程方式确定VB应用程序日志的位置?

  •  2
  • Greg D  · 技术社区  · 17 年前

    我正在重新安装一个旧的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(之前存在max size行为)。不过,我没有看到任何文档对此进行说明。(网站底部有一些社区内容。) FileLogTraceListener page 这表明我应该能够,所以我会检查一下。不过,如果我能找到一些官方文件对此的支持,我会感到舒服得多。)

    如果我这样做,我应该能够在上迭代跟踪侦听器集合

    4 回复  |  直到 17 年前
        1
  •  1
  •   Sam Meldrum    17 年前

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

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

    它放在箱子里 system.diagnostics\sharedListeners initializeData 属性

        2
  •  1
  •   Greg D    17 年前

    解决方法是使用 Microsoft.VisualBasic.Logging.FileLogTraceListener . 此跟踪侦听器支持通过其 FullLogFileName 属性以及通过 Location 所有物

        3
  •  0
  •   Greg D    17 年前

    My.Application.Log 全部,直接去火车站 System.Diagnostics.TraceListener s我可以这样选择我自己的日志文件夹,我肯定知道它的位置。

        4
  •  0
  •   Joel Coehoorn    17 年前

    我非常喜欢使用内置的跟踪对象进行日志记录。此外,如果需要保留使用临时文件的旧行为,请查看 System.IO.Path.GetTempFileName()