iTech Logging
Die Logging-Lösung der 2. Generation
ITLogLib
|
|
|
|
|
|
|
|
Initialisierung und Deinitialisierung in Applikationen ohne Startup Formular |
|
|
|
|
|
ITLogMsg
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Service-Funktionen
|
|
Öffnen von ITLogBook aus Ihrer Anwendung heraus mit dem aktuellen Log |
|
|
Ö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
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
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
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
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
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"
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
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
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
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.
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
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
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
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
Copyright © 1999 - 2004 iTech Software GmbH