我必须编写程序的日志记录,我发现了类似的代码,但仍然不知道如何编码。 日志文件的代码:
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
我只写了一个例子,因为我不知道该怎么做。 感谢您的示例或解释或您的任何帮助。
答案 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.")