0

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

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

例如,我有一个事件:

      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

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

4

1 回答 1

1

MicSim is correct, it is not hard. My basic logging Sub is below feel free to take it and use it or change it to suit your particular needs. I use this in a .bas file in the application. There is also code in here that allows you to limit the file size.

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

The ShowDateTime, sAltFileName, and lMaxFileSize parameters are optional. To use this method you just call it from where ever you want to write a message to the log. WriteDebugFile "The code just did something."

Or if you prefer using the Call statement, Call WriteDebugFile("The code just did something.")

于 2013-08-21T18:23:55.057 回答