我正在尝试将日志记录添加到似乎被卡住的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)
如果我删除它,作为删除旧文件的部分,它可以工作。我希望在那里有这个,以防止数百个日志文件堆积在各地的服务器上。
结束编辑
答案 0 :(得分:1)
可能无法解决权限问题。我会做以下事情,不一定按此顺序:
答案 1 :(得分:0)
我弄清楚它是什么。在部分修复之后,我能够在坏线失败时注销错误。它给出了一个类型不匹配错误,我跟踪它有多个文件夹对象的定义。固定代码如下所示:
Dim objFolder As Scripting.Folder
解决了它。感谢您的所有投入!