Log Structure

<< Click to Display Table of Contents >>

Navigation:  PUM - Modellierung und Codeerzeugung > Strukturen und Muster >

Log Structure

Beschreibung

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.

Client bereitet eine Log-Nachricht auf

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.

DB-Server empfängt die Log-Nachricht

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.

Log-Feeder Prozeß

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.