DreamDancer

Sparse File Logging

Apr 9th, 2016
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Public globalFileHandle As Long
  2. Public globalFilePointer As Long
  3. Public Const LogFilePath = "\somewhere\"
  4. Public Const LogFileLimit = 65536
  5.  
  6. Sub StartUpCode()
  7. Dim myHandle As Long, myPID As Long
  8. Dim FileName As String
  9. Dim myProgramName As String
  10.  
  11.   myHandle = GetMyHandle()                   ' function dependant on OS & API
  12.  myPID = GetMyPID(myHandle)                 ' function dependant on OS & API
  13.  myProgramName = GetMyProgramName(myHandle) ' function dependant on OS & API
  14.  globalFileHandle = FreeFile
  15.   globalFilePointer = 1                      ' dependent on filesystem, either 1 or 0
  16.  ' Note on filename
  17.  ' This format is setup for generating a unique filename per instance
  18.  ' Might not be desirable, will create a lot of log files
  19.  FileName = LogFilePath _
  20.     & Format$(Date, "yy-mm-dd") & "_" & Format$(Time, "hhmmss") _
  21.     & myProgramName _
  22.     & "_" & Format$(myPID) & "_" & Format$(myHandle) _
  23.     & ".txt"
  24.   Open FileName For Binary As globalFileHandle
  25.   ' main code
  26.  Close globalFileHandle
  27.  
  28. End Sub
  29.  
  30. Sub LogFileMessage(strMessage As String)
  31. Dim Work As String, msgLength As Long
  32.  
  33.   Work = Format$(Date, "yymmdd") & "_" & Format$(Time, "hhmmss") _
  34.     & strMessage & vbCr
  35.   msgLength = Len(Work & "--- ^ most recent ^ ---" & String$(5, vbCr))
  36.   If ((msgLength + globalFilePointer) > LogFileLimit) Then
  37.     globalFilePointer = 1                      ' dependent on filesystem, either 1 or 0
  38.  End If
  39.   Seek globalFileHandle, globalFilePointer
  40.   Put #fileout, , Work
  41.   globalFilePointer = Seek(globalFileHandle)
  42.   Put #fileout, , "--- ^ most recent ^ ---" & String$(5, vbCr)
  43.  
  44. End Sub
Advertisement
Add Comment
Please, Sign In to add comment