iTech Logging                       

   Die Logging-Lösung der 2. Generation

 


Quellcode-Schnippsel für iTech Logging  (Microsoft Visual Basic)

ITLogLib

 
Aufzählung

Initialisierung in Windows-Anwendungen

Aufzählung

Deinitialisierung in Windows-Anwendungen

Aufzählung

Initialisierung und Deinitialisierung in Applikationen ohne Startup Formular

Aufzählung

Öffnen zusätzlicher logischer Logkanäle

Aufzählung

Schließen logischer Logkanäle

 

ITLogMsg

 
Aufzählung

Die einfachste Art der Protokollierung

Aufzählung

Standardprotokollierung

Aufzählung

Protokollierung in einen variablen Logkanal

Aufzählung

Bedingtes Erzeugen von Logmeldungen

Aufzählung

Explizites Senden von Logmeldungen

Aufzählung

Explizite Unterdrückung von Logmeldungen

Aufzählung

Laufzeitoptimierung bei aktivierter Ausgabe-Filterung

 

Service-Funktionen

 
Aufzählung

Öffnen von ITLogBook aus Ihrer Anwendung heraus mit dem aktuellen Log

Aufzählung

Öffnen von ITConfigManager aus Ihrer Anwendung heraus mit der aktuellen Konfigurationsdatei

 


 

ITLogLib - Initialisierung in Windows-Anwendungen

 

Für die Initialisierung der iTech LogLib muß eine Konfigurationsdatei angegeben werden. Diese kann mit dem zum Lieferumfang von iTech Logging gehörenden ITConfigManager angelegt und bearbeitet werden. Der Anwendungsname kann frei gewählt werden. Die Initialisierung schlägt fehl, wenn die Konfigurationsdatei nicht existiert oder fehlerhafte Einträge enthält.

Nach erfolgreicher Initialisierung steht der Standard-Logkanal StdLog zur Verfügung. Dieser kann nicht explizit geschlossen werden.

Falls zusätzliche Logkanäle benötigt werden, sollten diese ebenfalls in der InitInstance()-Funktion geöffnet werden. Siehe dazu auch ITLogLib - Öffnen zusätzlicher logischer Logkanäle.

 


Private Sub Form_Load()

   ' Initialize the global ITLogLib2 object (for evaluation use empty LicenceKey string)
   If Not (ITLogLib2.Initialize("MyApplication", "ConfigFileName.icf", "LicenceKey")) Then
      MsgBox ITLogLib2.LastErrorDescription, vbOKOnly, "Error"
   End If

End Sub
 

 

zurück

 

ITLogLib - Deinitialisierung in Windows-Anwendungen

 

Die Deinitialisierung der iTech LogLib sorgt für die Ausgabe aller gepufferten Logmeldungen der verschiedenen Logkanäle, das Schließen aller logischer Logkanäle und die Freigabe des benutzten Speichers.

 


Private Sub Form_Unload(Cancel As Integer)

   ' Deinitialize the global ITLogLib2 object (forces writing out buffered logmessages)
   ITLogLib2.Deinitialize

End Sub
 

 

zurück

 

ITLogLib - Initialisierung und Deinitialisierung in Applikationen ohne Startup Formular 

 

siehe auch:
  
ITLogLib - Initialisierung in Windows-Anwendungen
   ITLogLib - Deinitialisierung in Windows-Anwendungen

 


Sub Main()

   ' Initialize the global ITLogLib2 object (for evaluation use empty LicenceKey string)
   If Not (ITLogLib2.Initialize("MyApplication", "ConfigFileName.icf", "LicenceKey")) Then
      MsgBox ITLogLib2.LastErrorDescription, vbOKOnly, "Error"
   End If

   ...


   ' Deinitialize the global ITLogLib2 object (forces writing out buffered logmessages)
   ITLogLib2.Deinitialize

End Sub
 

 

zurück

 

ITLogLib - Öffnen zusätzlicher logischer Logkanäle

 

Neben dem Standard-Logkanal können weitere anwendungsspezifische logische Logkanäle geöffnet werden. Zu jedem Logkanal muß ein Eintrag in der Konfigurationsdatei angelegt werden. Andernfalls kann das Öffnen des Logkanals fehlschlagen (siehe auch  ITLogLib - Initialisierung in Windows-Anwendungen). 

Es wird empfohlen, alle benötigten Logkanäle innerhalb der Form_Load()-Routine (in Windows-Anwendungen) oder der Main()-Routine (in Anwendungenohne Startup Formular) zu öffnen.

 


   ' Open additional logchannel 'DeveloperLog'
   If OpenLogChannel("DeveloperLog") Is Nothing Then
      Dim LogMsg As New ITLogMsg
      LogMsg.Create "Application", "Initialize", LEVEL_ERROR
      LogMsg.Add "Can't open logchannel 'DeveloperLog'"
      LogMsg.Add vbCrLf
      LogMsg.Add ITLogLib2.LastErrorDescription
   End If
 

 

zurück

 

ITLogLib - Schließen logischer Logkanäle

 

Das Schließen eines logischen Logkanals sorgt dafür, daß alle seine gepufferten Logmeldungen ausgegeben werden. Beim Deinitialisieren der ITLogLib werden alle geöffneten Logkanäle automatisch geschlossen.

Der Standard-Logkanal 'StdLog' kann nicht explizit geschlossen werden.

 


   ' Close additional logchannel 'DeveloperLog'
   If LogChannel("DeveloperLog") Is Nothing Then
      QuickLog "Application", "Deinitialize", "Can't close logchannel 'DeveloperLog'", LEVEL_WARNING
   Else
      CloseLogChannel
"DeveloperLog"
   End If
 

 

zurück

 

ITLogMsg - Die einfachste Art der Protokollierung

 

Die einfachste Art der Protokollierung ist QuickLog. QuickLog kann benutzt werden, wenn der Logmeldungstext bereits vollständig als String vorliegt.

 


   ' Use default loglevel (LEVEL_INFO) and standard logchannel (StdLog)
   QuickLog "Application", "Deinitialize", "Program terminated"

     ' Use loglevel WARNING
   QuickLog "Application", "Deinitialize", "Program terminated", LEVEL_WARNING

  
' Use loglevel WARNING and logchannel 'DeveloperLog'
   QuickLog "Application", "Deinitialize", "Program terminated", LEVEL_WARNING, "DeveloperLog"
 

 

zurück

 

ITLogMsg - Standardprotokollierung

 

Logmeldungen können an beliebigen Stellen im System erzeugt, als Parameter von Funktionen weitergereicht und innerhalb der Aufrufhierarchien ergänzt werden.  Der Loglevel (Info, Warnung, Error und Alarm) kann ebenfalls während der Lebensdauer einer Logmeldung ergänzt werden.
ITLogMsg-Objekte versenden sich automatisch zum Zeitpunkt ihrer Zerstörung, sofern sie nicht vorher explizit gesendet oder unterdrückt wurden.

 


   Dim LogMsg As New ITLogMsg
   Dim bVal As Boolean
   Dim iVal As Integer
   Dim dVal As Double
   Dim sVal As String

   bVal = False
   iVal = 42
   dVal = 99.99
   sVal = "logmessage text string"

   ' Create the logmessage
   LogMsg.Create "MyModule", "MyCase", LEVEL_INFO, "DeveloperLog"   ' Loglevel and logchannel are optional

   ' Add logmessage text
   LogMsg.Add "boolean: " & bVal & " "
   LogMsg.Add "integer: " & iVal & " double: " & dVal
   LogMsg.Add vbCrLf & sVal
   
   ' Add loglevel
   LogMsg.AddLogLevel LEVEL_ERROR
   
   ' LogMsg will be sent automatically to its logchannel at the end of its lifecycle
 

 

zurück

 

ITLogMsg - Protokollierung in einen variablen Logkanal

 

Logmeldungen können direkt an einem Logkanal-Objekt erzeugt werden.

 


' Logging to variable logchannel
Private Sub LogState(OutputChannel As ITOutputLogChannel)

   Dim LogMsg As ITLogMsg
   Set LogMsg =
OutputChannel .CreateLogMsg("Statistics", "State")
   LogMsg.Add "State=" & 42

End Sub



   ' Call the function
  
Dim OutputChannel As ITOutputLogChannel

   Set
OutputChannel = LogChannel("DeveloperLog")

   If Not (
OutputChannel Is Nothing) Then
      LogState
OutputChannel 
   End If
 

 

zurück

 

ITLogMsg - Bedingtes Erzeugen von Logmeldungen

 

Die komplette ITLogMsg-Schnittstelle kann bereits verwendet werden, wenn die Logmeldung nur deklariert, aber (noch) nicht erzeugt wurde. Dadurch besteht die Möglichkeit, Logmeldungen bedingt zu erzeugen ohne nachfolgende Aufrufe an der Schnittstelle von dieser Bedingung abhängig machen zu müssen. Solange die Logmeldung noch nicht erzeugt wurde, werden diese Aufrufe ignoriert.

 


   ' Conditional creation of logmessages
   Dim ErrorLogMsg As New ITLogMsg

   ' The ITLogMsg interface can be used at this stage, but changes to ErrorLogMsg will be ignored.

   If Not CheckState() Then
      ErrorLogMsg.Create "Statistics", "State", LEVEL_ERROR
      ErrorLogMsg.Add "Check failed "
   End If

   ' ErrorLogMsg will only be sent, if above CheckState function failed.

   ErrorLogMsg.Send
 

 

zurück

 

ITLogMsg - Explizites Senden von Logmeldungen

 

Logmeldungen können innerhalb des Programmkodes zum Beispiel aufgrund einer Bedingung kontrolliert abgesendet werden. Nachfolgende Aufrufe an der ITLogMsg-Schnittstelle sind weiterhin möglich, werden aber ignoriert. 

 


   ' Explicit sending of logmessages
   Dim LogMsg As New ITLogMsg
   LogMsg.Create "Statistics", "State"

   If Not CheckState() Then
      LogMsg.Add "Check failed"
      LogMsg.AddLogLevel LEVEL_ERROR
      LogMsg.Send
   End If

   ' Additional changes to LogMsg will be ignored, if above CheckState function failed.
 

 

zurück

 

ITLogMsg - Explizite Unterdrückung von Logmeldungen

 

Die Ausgabe von Logmeldungen kann innerhalb des Programmkodes zum Beispiel aufgrund einer Bedingung explizit unterdrückt werden. Nachfolgende Aufrufe an der ITLogMsg-Schnittstelle sind weiterhin möglich, werden aber ignoriert. 

 


   ' Cancel logmessages
   Dim LogMsg As ITLogMsg
   LogMsg.Create "Statistics", "State"

   If Not CheckState() Then
      LogMsg.Cancel   ' Send only in case of success
   End If

   ' Additional changes to LogMsg will be ignored, if above CheckState function failed.

   LogMsg.Send
 

 

zurück

 

ITLogMsg - Laufzeitoptimierung bei aktivierter Ausgabe-Filterung

 

Die Ausführung laufzeitintensiver Protokollierungsfunktionen kann durch Auswertung des Properties WillBeLogged verhindert werden, z.B. wenn die Logmeldung aufgrund der Konfiguration ohnehin herausgefiltert wird (WriteOut-Filter). Gleiches gilt bei erfolgter Unterdrückung der Ausgabe durch LogMsg.Cancel oder bei bereits versendeten Logmeldungen nach Aufruf von LogMsg.Send.

 


   ' Using the property WillBeLogged 
   If LogMsg.WillBeLogged Then
      LogMsg.Add Me.FullDump  ' expensive function
   End If
 

 

zurück

 

Service-Funktion - Öffnen von ITLogBook aus Ihrer Anwendung heraus mit dem aktuellen Log

 

Empfehlenswert ist die Definition eines - gegebenenfalls versteckten - Buttons in Ihrer Anwendung zum direkten Öffnen von ITLogBook mit dem aktuellen Log eines Logkanals. Entwickler, Service-Mitarbeiter oder auch Endanwender haben damit immer einen schnellen Zugriff auf die neuesten Protokollmeldungen. (Dazu muß iTech Logging auf dem Zielsystem installiert oder zumindest die Dateiendung "ilf" mit ITLogBook verknüpft worden sein.)

Bemerkung: Logdateien werden erst angelegt, wenn die erste Logmeldung tatsächlich ausgegeben wird. Das wiederum ist abhängig von der WriteOut-Period und dem WriteOut-Filter des entsprechenden Logkanals in der Konfigurationsdatei.

 


   ' Open ITLogBook with current logfile
   Dim OutputChannel As ITOutputLogChannel
   Set OutputChannel = LogChannel("DeveloperLog")

   If OutputChannel Is Nothing Then
      MsgBox "Can't open ITLogBook - Logchannel 'DeveloperLog' not open", vbOKOnly, "Warning"
   ElseIf OutputChannel.CurrentLogFile = "" Then
      MsgBox "Can't open ITLogBook - Logchannel 'DeveloperLog' still empty", vbOKOnly, "Warning"
   Else
      Shell "cmd /C start " & OutputChannel.CurrentLogFile, vbNormalFocus
   End If
 

 

zurück

 

Service-Funktion - Öffnen von ITConfigManager aus Ihrer Anwendung heraus mit der aktuellen Konfigurationsdatei

 

Empfehlenswert ist die Definition eines - gegebenenfalls versteckten - Buttons in Ihrer Anwendung zum direkten Öffnen von ITConfigManager mit der Konfigurationsdatei. Entwickler, Service-Mitarbeiter oder auch Endanwender haben dadurch immer einen schnellen Zugriff auf die aktuelle Konfiguration der Protokollkomponente. (Dazu muß iTech Logging auf dem Zielsystem installiert oder zumindest die Dateiendung "icf" mit ITConfigManager verknüpft worden sein.)

 


   ' Open ITConfigManager with application's current configfile
  
If ITLogLib2.IsInitialized Then
      Shell "cmd /C start " & ITLogLib2.ConfigFile, vbNormalFocus
   End If

 

 

zurück

 

 


Copyright © 1999 - 2004  iTech Software GmbH