|
<< Click to Display Table of Contents >> Navigation: PUM - Modellierung und Codeerzeugung > Strukturen und Muster > Log Structure |
Das Logging-System ermöglicht der Software, Mitteilungen abzuspeichern, damit man später Informationen daraus ziehen kann oder im Fehlerfall recherchieren kann.
Der Gemstone-Entwickler kann LOG-Meldungen für den Erfolgsfall oder den Mißerfolgsfall definieren. Das Framework sendet entsprechend die Meldungen an RabbitMQ in den evLog Channel.
Eine Anwendung erzeugt eine Instanz der Klasse "TSTAPIParMessage" und füllt die entsprechenden Informationen aus:
•appLogCounter - ein zentraler Zähler in der Anwendung, der mit jeder Nachricht hochgezählt wird (muss ausgefüllt sein)
•appName - Kurzstring der Anwendung, die die Meldung absenden will (muss ausgefüllt sein)
•logData - ein String, der eine JSON-Struktur definiert und spezifische Werte der LogMeldung enthält
•logLevel - numerische Darstellung des Log Levels
•logLevelText - textuelle Darstellung des Log Levels
•messageNumber - opt. numerischer Wert (der Client App) der Log Meldung
•messageText - textueller Inhalt der Log Meldung (der Client App)
•sqlStatement - vorbereitetes SQL-Statement der Nachricht
•srvLogCounter - Counter des LOG-Servers. Startet bei 0 beim Start des LogServers.
•whenAppTS - TS der Anwendung, wann diese Meldung erzeugt wurde
•whenLogSrv - TS des LogServers
Danach sendet die Anwendung diese Informationen mittels des API-Calls "SendAppLogMessage" an den DB Server.
Der DB-Server nimmt die Daten entgegen und füllt einige Daten auf:
•serverAppType - Typ des Servers, der diese Nachricht empfangen hat
•serverAppName - Name des Servers, der diese Nachricht empfangen hat.
und baut die Struktur von "TSTAPIParMessage" auf und setzt dort einige Attribute:
•contentType = "application/json"
•correlationID = nil
•exchange = direct
•deliveryMode = persistent
•name = "evLog"
•replyTo = nil
•routingKey = "chLog"
•vHost = "?"
•payload = toJosonString(TSTAPIParMessage)
•payloadType = "TSTAPIParMessage"
sendet den Event direkt nach RabbitMQ. RabbitMQ dient damit als Puffer für die Speicherung in die Datenbank.
Ein externer Prozess nimmt die Events von RabbitMQ entgegen und füllt den folgenden Wert aus:
•srvLogCounter
und bereitet die SQL-Statements auf und schreibt diese Daten in die Datenbank.