VB6:无法使用我的ActiveX dll进行任何日志记录

时间:2011-04-13 21:03:58

标签: logging 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

但那失败了。如果我尝试使用Goto ErrorHandler部分捕获代码中的错误:

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

应用程序完全失败,因此登录Web服务后我甚至无法选择任何选项。我知道问题不在于应用程序日志已满,因为它继续添加新事件。任何有关造成这种情况的建议或想法都会非常感激。

修改

我很欣赏这些好建议,但他们没有解决这个问题。但是,我确实认为由于某种原因,它不喜欢这条线:

Set objFolder = objFS.GetFolder(strLOG_PATH & g_strAppName)

如果我删除它,作为删除旧文件的部分,它可以工作。我希望在那里有这个,以防止数百个日志文件堆积在各地的​​服务器上。

结束编辑

2 个答案:

答案 0 :(得分:1)

可能无法解决权限问题。我会做以下事情,不一定按此顺序:

  • 抛出问题的原因。它会很快告诉你你是否还在写作。它还将指出权限问题。
  • 如果您使用的是Vista或Win 7,请以管理员模式启动VB6。

答案 1 :(得分:0)

我弄清楚它是什么。在部分修复之后,我能够在坏线失败时注销错误。它给出了一个类型不匹配错误,我跟踪它有多个文件夹对象的定义。固定代码如下所示:

Dim objFolder As Scripting.Folder

解决了它。感谢您的所有投入!