Suche Abfragemöglichkeit der "IPS Konsolen Meldungen" im Webfront

Hallo,

da ich vermehrt mit 1 Wire Fehlern zu kämpfen habe, möchte ich zur „Sicherheit“ die IPS Konsolen „MELDUNGEN“ im Webfront anzeigen lassen?
Über diese Ansicht sehe ich recht schnell ob es irgendwelche Gateway Fehler gibt.

Ich habe dazu über die Suche und in der Doku nichts gefunden…

Geht das überhaupt?

Moin,

es gibt da keine Funktion für. Allerdings werden Meldungen immer direkt ins logfile unter IP-SYMCON-DIR\logs\logfile.log geschrieben. Du kannst das also mit dolgender Funktion einlesen.

string file_get_contents ( string $filename [, bool $use_include_path = false [, resource $context [, int $offset = -1 [, int $maxlen ]]]] )

Wenn du es dann in eine String Variable schreibst kannst du es im WebFront anzeigen. Oder du nutzt direkt ein Skript welches den Inhalt ausgibt.

Gruß,
gucky

Vielen Dank.

hab nur noch einen kleinen Fehler:D

$filename="logfile.php";
$use_include_path=IPS_GetKernelDir()."logs\\";
$Meldung=string file_get_contents (string $filename [,bool $use_include_path= false[,resource $context [,int $offset = -1 [,int $maxlen ]]]]);
SetValue(41986,$Meldung);

Fehler:

Parse error: syntax error, unexpected ‚file_get_contents‘ (T_STRING) in C:\IP-SYMCON\scripts\21918.ips.php on line 4
PHP-Error-Parsing Error: syntax error, unexpected ‚file_get_contents‘ (T_STRING)
Error in Script C:\IP-SYMCON\scripts\21918.ips.php on Line 4Abort Processing during Fatal-Error: syntax error, unexpected ‚file_get_contents‘ (T_STRING)
Error in Script C:\IP-SYMCON\scripts\21918.ips.php on Line 4

Hallo mastermind1,

das war die php Definition der Funktion. :wink:

Das müsste funktionieren:


$filename="logfile.php"; 
$path=IPS_GetKernelDir()."logs\\"; 
$Meldung = file_get_contents ($path . $filename); 
SetValue(41986,$Meldung);  

Gruß,
gucky

P.S. Falls du sehr viele Meldungen im Log hast kann file_get_contents ziemlich unperformant werden und du musst mit fopen arbeiten, das ist minimal aufwendiger.

Ich lasse das Skript nicht live mitlaufen, sondern nur per „Knopfdruck“… und das dann für X Minuten.
Damit sollte es einigermaßen o.k. sein…

Leider habe ich noch einen Fehler:

$filename="logfile.log";  
$path=IPS_GetKernelDir()."logs\\";  
$Meldung = file_get_contents ($path.$filename);  
SetValueString(41986,$Meldung);  

Gibt die Meldung aus:

PHP-Error-Warning: Limit of 1024kb exceeded. Variable has not been written.
   Error in Script C:\IP-SYMCON\scripts\21918.ips.php on Line 5
Warning:  Limit of 1024kb exceeded. Variable has not been written. in C:\IP-SYMCON\scripts\21918.ips.php on line 5

Das tägliche Log hat ca. 3 - 3,5MB.

In meiner PHP.INI steht:

max_execution_time=3000
error_reporting=E_ALL
memory_limit=32M
register_globals=off

Gibt’s da ne Möglichkeit?

Es ist nicht möglich mehr als 1 MB in eine Variable zu tun. Warum willst du das ganze Log in einer Variable haben? Auch bei 1 MB wird dein Browser im WebFront beim Anzeigen gefühlt abstürzen :wink:

paresy

Der Einsatz von „fopen“ ergibt:

[$FileName = IPS_GetKernelDir()."logs\logfile.log";
$handle = fopen($FileName, "r");
SetValue(41986,$handle);
PHP-Error-Warning: Cannot auto-convert to String from Variant. Error: Could not convert variant of type (Null) into type (String)
   Error in Script C:\IP-SYMCON\scripts\21918.ips.php on Line 8

In Zeile 8 steht:

SetValue(41986,$handle);[/

Wenn ich danach Google. dann würde ich das daraus ableiten:

$FileName = IPS_GetKernelDir()."logs\logfile.log";
$handle = fopen($FileName, "r");
$handle_convert = settype($handle, 'string');
SetValue(41986,$handle_convert);

Ergibt:

TRUE

Ein

$FileName = IPS_GetKernelDir()."logs\logfile.log";
$handle = fopen($FileName, "r");
settype($handle, 'string');
SetValue(41986,$handle);

ergibt:
Ressource ID#9 als Ergebniss…

Gibt es den eine Möglichkeit den aktuellen Logteil übers Webfront anzeigen zu lassen?

Ich möchte bei Bedarf - ohne meinen WINDOWS Rechner starten zu müssen - im aktuelle Log nachsehen können ob es dort Fehler gibt.

D.h. wie in der Konsole „MELDUNGEN“

Ich hab da mal was gebaut :slight_smile:

IP-Symcon - Wie kann ich… 2.0 - Seite 6

…kannst du auch auf HTML Anzeige umbauen, dann hast du bei Fehlern auch die Textfarbe ROT usw… :wink:

Für HTMLBox als Variablenprofil musst du die Zeile auf mit
auf <br> ändern:
$LetztenXZeilenString = implode("<br>",$LetztenXZeilen);

Grüße,
Chris

Danke Chris!

Für den Raspberry habe ich für mich mal den Pfad geändert, da dort die Logfiles an einem anderen Ort sind:

$filename="logfile.log";
//$path=IPS_GetKernelDir()."logs/"; // Windows
$path = "/var/log/symcon/";               //Raspberry
$LogFile = $path.$filename;

Danke für den Hinweis! Bau ich noch mit in das Skript ein :slight_smile:

Grüße,
Chris

@bayaro

super vielen DANK.

Top…

Ich schalte dann einfach im Webfront über nen einfachen Schalter (TRUE/FALSE) die Anzeige der letzten X Einträge aus dem Log an.

Das ist für die schnelle Fehlersuche TOP - ohne den Rechner anwerfen zu müssen!

Sieht dann so aus: (hab leider z.Zt. keinen Fehler - daher nichts in rot :smiley: )

Gerne :slight_smile:

Du kannst dir auch noch einen Button machen mit „Aktualisieren“, oder einfach das Skript ins WebFront verlinken, womit dann die aktuellen letzten Zeilen vom Log neu geladen und die Anzeige aktualisiert wird…

Grüße,
Chris

wenn auch dafür alleine oversized, aber die IPSLibrary bringt das „Out-of-the-box“ mit: IPSLibrary - Installation Schritt für Schritt – IP-Symcon (also über den dort integrierten IPSLogger)