General

6.86 Creare un file di log
  Mauro Castaldi
Molto spesso nasce la necessità di avere uno storico su file delle operazioni appena fatte, le query eseguite, eventuali errori, etc, specialmente negli applicativi che non possono essere sempre monitorati dal programmatore. I file di log sono semplici file di testo che riportano la data e l'ora esatta in cui si è verificato un certo evento.
Questa e' una versione "beta" (manca il controllo sulla grandezza del file di log per non diventare troppo grosso, non ho documentato le funzioni, etc.) che uso nei miei programmi ma funziona egregiamente.

Prima di tutto, create un nuovo modulo di classe. Poi metteteci dentro le seguenti righe:
Dim nome As String
Dim percorso As String
Dim modo As Byte

Private Sub Class_Initialize()
   nome = "c:\default.log"
   percorso = ""
   modo = 1
End Sub

Property Let name(nomeUtente As String)
   nome = nomeUtente
End Property

Property Get name() As String
   name = nome
End Property

Property Let path(percUtente As String)
   percorso = percUtente
End Property

Property Get path() As String
   path = percorso
End Property

Property Let mode(modoUtente As Byte)
   modo = modoUtente
End Property

Property Get mode() As Byte
   mode = modo
End Property

Function LWrite(messaggio As String) As Boolean
   Dim FileNumber As Integer
   Dim dati As String
   Select Case modo
      Case 1:
         dati = Format$(Now(), "General Date") & " " & messaggio
      Case 2:
         dati = Format$(Date, "General Date") & " " & messaggio
      Case 3:
         dati = Format$(Time, "General Date") & " " & messaggio
      Case 4:
         dati = messaggio
      Case Else:
         dati = " Invalid LogFile Mode: " & modo
         Exit Function
   End Select
   FileNumber = FreeFile
   Open nome For Append As #FileNumber
   Print #FileNumber, dati
   Close #FileNumber
End Function
Salvate e nominate il modulo appena creato "Logfile".
Adesso, vi do un esempio di utilizzo. Copiate e poi lanciate questa subroutine:
Private Sub tapeEject()
   Dim ormacce As New LogFile
   On Error GoTo Eject_Err

   ormacce.name = "c:\ormacce.log"
   ormacce.LWrite "Eject nastro..."
   Call Shell("C:\EJECT.BAT", 1)

Eject_Exit:
   Set ormacce = Nothing
   Exit Sub

Eject_Err:
   ormacce.LWrite "Errore nell'eject del nastro di backup!!!"
   ormacce.LWrite "Errore " & Err.Number & " " & Err.Description
   Resume Eject_Exit
End Sub
Ovviamente non funzionerà niente (non esiste il file C:\EJECT.BAT) e vi troverete in C:\ il file ORMACCE.LOG che conterrà tre righe. La proprietà "name" definisce il nome del file di log. Il metodo LWrite viene utilizzato per scrivere una singola riga con data e ora sul file di log.
I nuovi messaggi vengono sempre accodati, anche se vengono create nuove classi che fanno riferimento allo stesso file di log (name).
Se non viene impostata la proprietà "name", il file di log sarà "C:\DEFAULT.LOG".


Se pensate di avere del materiale freeware interessante e volete pubblicarlo, allora leggete qui.