2011-04-13 48 views
2

我想將日誌記錄添加到似乎卡住運行的dll。我曾嘗試只需添加一對夫婦子程序記錄到一個文件:VB6:無法做任何日誌記錄與我的ActiveX dll

Sub PrepareLogging(ByVal strAppName As String) 
    Dim objFS As FileSystemObject 
    Dim objFolder As Folder 
    Dim objFile As File 

    Set objFS = New Scripting.FileSystemObject 
    g_strAppName = strAppName 
    If Not objFS.FolderExists(strLOG_PATH & g_strAppName) Then 
    objFS.CreateFolder (strLOG_PATH & g_strAppName) 
    End If 

    Set objFolder = objFS.GetFolder(strLOG_PATH & g_strAppName) 
    For Each objFile In objFolder.Files 
    If (Now - objFile.DateCreated) > 60 Then 
     objFile.Delete 
    End If 
    Next 
    Set objFolder = Nothing 
    Set objFS = Nothing 
End Sub 

Sub LogAction(ByVal strMsg As String) 
    Dim objFS As FileSystemObject 
    Dim objText As TextStream 
    Set objFS = New Scripting.FileSystemObject 

    Set objText = objFS.OpenTextFile(strLOG_PATH & g_strAppName & "\" & Format(Date, "yyyymmdd") & ".log", ForAppending, True) 
    objText.WriteLine (Format(Time, "hh:mm:ss") & " - " & strMsg) 
    objText.Close 
    Set objText = Nothing 
    Set objFS = Nothing 
End Sub 

的代碼將運行,但它似乎忽略這一切的日誌記錄功能。我知道代碼是正確的,因爲它可以在其他dll和exes中使用這些子例程添加模塊。我試圖添加一個基本的命令直接登錄到事件日誌:

App.LogEvent strMsg 

但是,失敗。如果我試圖抓住代碼中的錯誤與轉到的ErrorHandler部分:

ErrorHandler: 
    App.LogEvent Err.Number & Err.Description 

的應用徹底失敗了,這樣我甚至不能登錄到Web服務後選擇任何選項。我知道問題不在於應用程序日誌已滿,因爲它繼續添加新的事件。任何建議或想法是什麼導致這將不勝感激。

編輯

我很欣賞的好建議,但他們並沒有解決問題。我沒有,但是,確定出於某種原因,它不喜歡這一行:

Set objFolder = objFS.GetFolder(strLOG_PATH & g_strAppName) 

如果我刪除,隨着部分刪除舊文件,它的工作原理。我想在那裏,以防止數百個日誌文件堆積在各地的​​服務器上。

編輯完

+1

http://support.microsoft.com/kb/251264可能會連接到您的問題。 – wqw 2011-04-14 09:44:54

回答

0

我想通了,這是什麼。在獲得部分修復後,我可以在出現故障時註銷錯誤。它給出了一個類型不匹配的錯誤,我跟蹤到它有多個文件夾對象的定義。固定代碼如下所示:

Dim objFolder As Scripting.Folder 

解決了它。感謝所有的投入!

+0

哦,我沒有完全解決事件日誌部分的事情,但我不想在那裏記錄事情。 – 2011-04-15 18:29:46

1

它可以爲失敗的權限問題。我會做以下事情,不一定按以下順序:

  • 拋出問題的ProcMon。它會很快告訴你,如果你甚至想寫。它也會指出權限問題。
  • 開始VB6在管理員模式下,如果你是在Vista或Win 7
+0

我用一些新信息更新了我的問題。謝謝你的好回覆。 – 2011-04-15 17:05:03