« Zurück zu Produkt

Dokumentation

UC_GetLastLogMessages

 array UC_GetLastLogMessages (int $InstanzID, int $Typ) 

Parameterliste

InstanzID

ID zum Util Control

Typ

Meldungstyp von 0 bis 6 (siehe Tabelle in der Beschreibung)

Rückgabewert

Ein Array mit einem Eintrag je Meldung, beginnend mit der ältesten. Jeder Eintrag enthält folgende key => value Paare:

Index Typ Beschreibung
Message string Text der Meldung
Sender string Name des Absenders, z.B. "Kernel" oder der Modulname. Kürzere Namen sind mit Leerzeichen auf 20 Zeichen aufgefüllt
SenderID integer ID des Absenders, z.B. die InstanzID bei Meldungen von Instanzen. 0 bei Meldungen des Kernels und von IPS_LogMessage
TimeStamp integer Unix Zeitstempel der Meldung

Beschreibung

Die Funktion liefert die zuletzt ins Log geschriebenen Meldungen des Meldungstyps Typ. Das Util Control hält dazu für jeden Meldungstyp einen eigenen Puffer im Arbeitsspeicher, der die letzten 25 Meldungen enthält. Kommt eine weitere Meldung hinzu, wird die älteste verworfen. Die Anzahl kann über den Spezialschalter "LogMessageCount" geändert werden; der Wert wird beim Erstellen der Instanz, also beim Start von IP-Symcon, gelesen. Nach einem Neustart sind die Puffer leer, UC_ResetLastLogMessages leert sie ebenfalls.

Typ Konstante Bezeichnung im Log Hinweis
0 KL_MESSAGE MESSAGE
1 KL_SUCCESS SUCCESS
2 KL_NOTIFY NOTIFY
3 KL_WARNING WARNING
4 KL_ERROR ERROR
5 KL_DEBUG DEBUG Immer leer, Debug-Meldungen werden nicht weitergereicht
6 KL_CUSTOM CUSTOM z.B. Meldungen von IPS_LogMessage
Warning

Typ ist nicht die Nachrichten-ID der Konstante, sondern deren Abstand zu KL_MESSAGE, also z.B. KL_ERROR - KL_MESSAGE = 4. Werte außerhalb von 0 bis 6, z.B. direkt KL_ERROR, führen zum Fehler "Type must be between 0 and 6".

Erfasst werden nur Meldungen, die entstehen, während IP-Symcon betriebsbereit ist (nicht während des Startens und Herunterfahrens). Debug-Meldungen (KL_DEBUG) werden nicht weitergereicht und deshalb nie erfasst, ebenso wenig Meldungen, die über den Spezialschalter "LogfileFilter" ausgefiltert werden. Die Anzahl der Meldungen je Typ liefert UC_GetLogMessageStatistics.

Die ID der Util Control Instanz liefert z.B. IPS_GetInstanceListByModuleID mit der Modul-GUID {B69010EA-96D5-46DF-B885-24821B8C8DBD}. Existiert InstanzID nicht, schlägt die Funktion mit "Instance #... does not exist" fehl, gehört die Instanz zu einem anderen Modul, mit "Instance does not implement this function".

Beispiel

// ID der Util Control Instanz ermitteln
$id = IPS_GetInstanceListByModuleID('{B69010EA-96D5-46DF-B885-24821B8C8DBD}')[0];

// Alle gespeicherten Fehlermeldungen ausgeben
foreach (UC_GetLastLogMessages($id, KL_ERROR - KL_MESSAGE) as $message) {
    echo date('d.m.Y H:i:s', $message['TimeStamp']) . ' | ' . trim($message['Sender']) . ' | ' . $message['Message'] . PHP_EOL;
}

print_r(UC_GetLastLogMessages($id, KL_SUCCESS - KL_MESSAGE));

/* liefert z.B.:
Array
(
    [0] => Array
        (
            [Message] => *** IPS READY
            [Sender] => Kernel
            [SenderID] => 0
            [TimeStamp] => 1700000000
        )

)
*/
Haben Sie noch Fragen?