2009-01-26 31 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()

相關問題