记录(记录)程序的事件

时间:2013-08-21 09:31:32

标签: logging vb6 visual-studio-6

我必须编写程序的日志记录,我发现了类似的代码,但仍然不知道如何编码。 日志文件的代码:

Option Explicit

Public Enum LogTypeEnum
ltInfo = 1
ltWarning = 2
ltError = 3
End Enum

Public Enum LogProgramDomainEnum
lpdRole = 1
lpdCinnosti = 2
End Enum

Private mWinAdLogCol As New EMWinAdLog.WinAdLogCol
Private mFrmLog As New EMWinAdLog.WinadLogFrm

Public Sub WinADLogInit(cfg As EMACTIVEXLib.EMCONFIG, ByVal ProgramID As Integer)
mWinAdLogCol.Init cfg, ProgramID

mFrmLog.AddLogType LogTypeEnum.ltInfo, "Info"
mFrmLog.AddLogType LogTypeEnum.ltWarning, "Warning"
mFrmLog.AddLogType LogTypeEnum.ltError, "Error"

mFrmLog.AddProgramDomain LogProgramDomainEnum.lpdRole, "Role"
mFrmLog.AddProgramDomain LogProgramDomainEnum.lpdCinnosti, "Activity"

mFrmLog.Init cfg, ProgramID
End Sub

Public Sub WriteLog(LogProgramDomain As LogProgramDomainEnum, LogType As 
LogTypeEnum,Description1 As String, Optional Description2 As String = "")
mWinAdLogCol.xAdd LogProgramDomain, LogType, Description1, Description2
End Sub

Public Sub ShowLog()
mFrmLog.Show 0
End Sub

Public Sub Done()
mFrmLog.Done
Set mFrmLog = Nothing
Set mWinAdLogCol = Nothing
End Sub

并且对于exmaple我有一个事件:

      Private Sub cmAdd_Click()
        Load frmAddrolu
        frmAddrolu.Show vbModal, Me
        If frmAddrolu.Nazov <> "" Then
        Dim LokRola As TRola
        Set LokRola = Role.xAdd(frmAddrolu.Nazov)
        ZobrazRoleToLst cmbRole, Role
        SetCmbItem cmbRole, LokRola.RolaID
        If cmbRole.ListIndex >= 0 Then
        ZobrazSkupiny AllSkupiny, RolaProgramPristup, treeSkup, True
        treeSkup_NodeClick treeSkup.SelectedItem
        End If
        End If
        End Sub

我只写了一个例子,因为我不知道该怎么做。 感谢您的示例或解释或您的任何帮助。

1 个答案:

答案 0 :(得分:1)

MicSim是正确的,并不难。我的基本日志记录Sub可以随意使用它并使用它或更改它以满足您的特定需求。我在应用程序的.bas文件中使用它。这里还有一些代码,允许您限制文件大小。

Public Sub WriteDebugFile(ByVal DebugString As String, Optional ByRef ShowDateTime As Boolean = True, Optional sAltFileName As Variant, _
Optional ByVal lMaxFileSize As Long)

Dim hFile As Integer
Dim hTmpFile As Integer
Dim sFileName As String
Dim sTmpFile As String * 255
Dim lfilesize As Long
Dim sFBuffer As String * 100
Dim lRtn As Long

On Error GoTo 0   'turn off error checking

If IsMissing(sAltFileName) Then
   sFileName = AppPath() & App.ProductName & "dbg.log"
Else
   If InStr(sAltFileName, "\") > 0 Then   'the name appears to have a path
       sFileName = sAltFileName
   Else
       sFileName = AppPath() & sAltFileName
   End If
End If

'check and adjust the file size? lMaxFileSize must be greater than the 1k to reduce file by
If lMaxFileSize >= Len(sFBuffer) And FileExists(sFileName) = True Then
    If FileLen(sFileName) > lMaxFileSize Then
        sFBuffer = Space$(Len(sFBuffer)) 'initialize the buffer
        lRtn = GetTempFilename(AppPath(), "dbg", 0, sTmpFile)
        'remove 1k from the top of the file
        hFile = FreeFile
        Open Trim$(sFileName) For Binary As hFile Len = Len(sFBuffer)   'the original file
        DoEvents
        hTmpFile = FreeFile
        Open sTmpFile For Binary As hTmpFile Len = Len(sFBuffer) 'the new file
        Get #hFile, , sFBuffer
        Do Until EOF(hFile) = True
            Get #hFile, , sFBuffer   'forget the first len(buffer)
            If InStr(1, sFBuffer, Chr$(0), vbBinaryCompare) Then
                Put #hTmpFile, , Left$(sFBuffer, InStr(1, sFBuffer, Chr$(0), vbBinaryCompare) - 1)
            Else
                Put #hTmpFile, , sFBuffer
            End If
        Loop
        Close #hFile
        Close #hTmpFile
        Kill sFileName
        Name sTmpFile As sFileName
    End If
End If

'free to continue
hFile = FreeFile
Open sFileName For Append As hFile

If ShowDateTime Then
    DebugString = "[" & Format$(Date$, "M-D-YYYY") & " " & Format$(Time$, "Hh:Nn:ss") & "]" _
     & Chr$(9) & DebugString
End If

Print #hFile, DebugString
Close #hFile

End Sub

ShowDateTime,sAltFileName和lMaxFileSize参数是可选的。要使用此方法,只需从要将消息写入日志的位置调用它。 WriteDebugFile "The code just did something."

或者,如果您更喜欢使用 Call 语句,Call WriteDebugFile("The code just did something.")