Reputation: 111
I have to code logging of program and i found similar code but still dont know how to code it. The code of Log file:
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
and for exmaple i have an event:
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
I wrote only example because i have no idea how to do it. Thanks for example or explanation or any help from you.
Upvotes: 0
Views: 1066
Reputation: 9726
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.")
Upvotes: 1