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 |
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
)
)
*/