hi leute ich möchte log datein in fariablen schreiben leider fehlt mir da noch ein script ich hoffe ihr könnt mir helfen das laden der datein klapt schon gut
mache ich mit :
auswerten der datei fällt mir noch etwas schwer
ich wollte das mit if machen nur fehlt mit noch einige befehle und hoffe ich verratet sie mit
ich such folgendes
suche wiederholungen und setze „zeiger“ auf anfang der letzen z.b.
hier ein eiszug aus dem log
Id Date Time Event
100000 06/07/07 21:08:11 *** PowerChute PLUS Version 5.1 started ***
100200 06/07/07 21:08:19 Communication established
200403 06/07/07 21:08:46 UPS unable to perform runtime calibration: Capacity < 100
100402 06/07/07 21:09:09 User-initiated UPS self-test passed
200403 06/07/07 21:10:23 UPS unable to perform runtime calibration: Capacity < 100
200008 06/07/07 21:10:43 UPS on battery: Simulated power failure
100300 06/07/07 21:10:43 Normal power restored: UPS on line
200403 06/07/07 21:11:17 UPS unable to perform runtime calibration:
das erste ist die fehler/meldungs ID dann datum dann uhrzeit
ich hätte gerne das er nur die id liest (ich habe ne überstzungsdatie mit den Deutschen erklärungen) und datum und uhrzeit und mit das dann ausgibt z.b. mit tts bei fehler
um den Inhalt einer Datei in eine String-Variable einzulesen genügt dieser PHP-Befehl:
$text = get_file_contents("C:/Dokumente und Einstellungen/Ken/Desktop/USV LOG 3.txt");
Nun kannst Du die Variable $text in ein Array von Zeilen aufspalten:
$zeilen = explode("
", $text); // nach Zeilenumbruch trennen
Jedes Element der Array-Variablen $zeilen enthält nun eine Zeile des Textes.
Du kannst nun jede dieser Zeilen in weitere Bestandteile zerlegen. In diesem Falle ist das Leerzeichen das Trennzeichen:
foreach ($zeilen as $zeile) // alle Elemente des Arrays durchlaufen
{
$elemente = explode(" ", $zeile); // Zeile nach Leerzeichen trennen
$id = $elemente[0]; // das 1. Element enthält die ID
$datum = $elemente[1]; // das 2. Element enthält das Datum
$zeit = $elemente[2]; // das 3. Element enthält die Uhrzeit
}
Auf diese Weise erhältst Du Zugriff auf alle Felder einer Zeile.
DANKE JUNGS ihr seit supper genau das was ich gesucht habe schaue mir nachher noch mal in ruhe wiips an.
Dann fehlt mit ja nur noch die erkennung des letzten eintrages habt ihr da auch ne idee
mir fallen 2 wege ein.
auslesen des datums und berechnung welches das letzte ist
nichts so schön wie ich finde
auslesen der log und döschen der datei dadurch würde jeder neue eintrag immer an der selben stelle stehen.
hi leute hatte heute mal wieder zeit weiter zu bastlen leider klapt der beitrag von HJH nicht wie er sollte ich bekomme folgende fehler meldung
<br />
<b>Fatal error</b>: Call to undefined function get_file_contents() in <b>D:\Programme\IP-SYMCON\scripts\.currentscript</b> on line <b>10</b><br />
woran liegt das fehlt mir noch eine DLL ??
bitte um hilfe
Leider klapt es immer noch nicht so recht wo liegt den mein oder der Fehler
<?
/*
*******************************
IP-SYMCON Event Scripting
*******************************
File : LogPaser.ips.php
Trigger :
Interval :
*/
$text = get_file_contents("F:/Program Files/Pwrchute/pwrchute.txt");
$zeilen = explode("
", $text); // nach Zeilenumbruch trennen
foreach ($zeilen as $zeile) // alle Elemente des Arrays durchlaufen
{
$elemente = explode(" ", $zeile); // Zeile nach Leerzeichen trennen
$id = $elemente[0]; // das 1. Element enthält die ID
$datum = $elemente[1]; // das 2. Element enthält das Datum
$zeit = $elemente[2]; // das 3. Element enthält die Uhrzeit
}
?>
<br />
<b>Fatal error</b>: Call to undefined function get_file_contents() in <b>F:\IP-Symcon\scripts\.currentscript</b> on line <b>10</b><br />
Warscheinlich bin ich nur blind abr bitte helft mir
<?
/*
*******************************
IP-SYMCON Event Scripting
*******************************
File : LogPaser.ips.php
Trigger :
Interval :
*/
$text = file_get_contents("F:/Program Files/Pwrchute/pwrchute.txt");
$zeilen = explode("
", $text); // nach Zeilenumbruch trennen
foreach ($zeilen as $zeile) // alle Elemente des Arrays durchlaufen
{
$elemente = explode(" ", $zeile); // Zeile nach Leerzeichen trennen
$id = $elemente[0]; // das 1. Element enthält die ID
$datum = $elemente[1]; // das 2. Element enthält das Datum
$zeit = $elemente[2]; // das 3. Element enthält die Uhrzeit
}
?>[/b]
<br />
<b>Warning</b>: file_get_contents(F:/Program Files/Pwrchute/pwrchute.txt) [<a href='function.file-get-contents'>function.file-get-contents</a>]: failed to open stream: No such file or directory in <b>F:\IP-Symcon\scripts\.currentscript</b> on line <b>10</b><br />
<br />
<b>Notice</b>: Undefined offset: 1 in <b>F:\IP-Symcon\scripts\.currentscript</b> on line <b>16</b><br />
<br />
<b>Notice</b>: Undefined offset: 2 in <b>F:\IP-Symcon\scripts\.currentscript</b> on line <b>17</b><br />
bei der Fehlersuche solltest Du grundsätzlich immer den ersten aufgetretenen Fehler behandeln, da alle anderen meistens nur Folgefehler sind.
Die erste Fehlermeldung besagt, dass die angegebene Datei nicht gefunden wurde.
Möglicherweise ist in der Pfadangabe ein Schreibfehler enthalten.
Stimmt der Laufwerksbuchstabe?
So liebe leute ich habs fertig bekommen mit hilfe einen netten Informatieckers
Also was macht mein Script nun :
Es öffenet eine Logdatei und liest die inhalte und erzeigt dann daraus einen String und diesen dann weiter verarbeiten zu können.z.b. bei mir um ne warnmeldung per tts herauszugeben.
Ich habe alles kommentare drinnen gelassen um es „uns“ einfacher zu machen.
Ihr könnt alles sachen auskommentieren die ihr nicht braucht das macht die sache noch was schneller.
<?php
$Log = GetValueString('LogPaser');
# letzte Aenderung 28.06.2007
# Author: chr-frank@gmx.net
# use it free .. don't sell it without making me rich too!
define ("PATH", "F:/Program Files/Pwrchute");
define ("MYFILE", "/pwrchute.log");
$myBigTable = array(
'id' => array(),
'datum' => array(),
'zeit' => array(),
'text' => array()
);
$myFile = $_SERVER['DOCUMENT_ROOT'].PATH.MYFILE;
$myFileHandle = fopen($myFile,'r') or die("Can't open file");
print "<h1>Hallo Zeilen:</h1>
<p>Im Code abgreifen:<br>
Zeile: 36,37,38 - Uebergabe der Werte fuer id, datum und zeit<br>
Zeile: 47 - .. Wert fuer den Text<br><br>
Hier wird alles in das array 'myBigTable' geräumt<br><br>
Verarbeitung am besten in Zeile 62 (for-Schleife) .. siehe Kommentar ..</p>";
$zeiNum = 0;
while (!feof($myFileHandle)) {
$zeiNum++;
$myZeile = split (" ",fgets($myFileHandle, 512));
# und jetzt die Zeilen nacheinander verarbeiten bis while alle ist
array_push($myBigTable['id'], $myZeile[0]);
array_push($myBigTable['datum'],$myZeile[1]);
array_push($myBigTable['zeit'], $myZeile[2]);
$newLastPart = "";
for ($i=3;$i<count($myZeile);$i++) {
$newLastPart .= $myZeile[$i]." ";
}
array_push($myBigTable['text'], $newLastPart);
echo "<pre>"; print_r($myZeile); echo "</pre>";
print $zeiNum.": ".$myZeile[0]." ".$myZeile[1]." ".$myZeile[2]." ".$newLastPart."<br>";
}
print "<h1>Hallo Alles im neuen Array sortiert:</h1>";
echo "<pre>"; print_r($myBigTable); echo "</pre>";
print "<h1>Hallo Alles als Tabelle:</h1>
<table border=\"1\" width=\"100%\">
<tr><td colspan=\"5\">Zeilenanzahl: ".count($myBigTable['id'])."</td></tr>";
for ($t=0;$t<count($myBigTable['id']);$t++) {
# Hier kannst Du zeilenweise ueberpruefen wann wo was drinsteht, zB if (zeit == 12:15Uhr) { mach wa'se'will's; }
print "<tr><td>".$t."</td><td>".$myBigTable['id'][$t]."</td><td>".$myBigTable['zeit'][$t]."</td><td>".$myBigTable['datum'][$t]."</td><td>".$myBigTable['text'][$t]."</td></tr>";
}
print "</table><h1>Schööö</h1>
<p>letzte Zeile:<br>".$myBigTable['id'][count($myBigTable['id'])-2]." --- ".$myBigTable['zeit'][count($myBigTable['id'])-2]." --- ".$myBigTable['datum'][count($myBigTable['id'])-2]." --- ".$myBigTable['text'][count($myBigTable['id'])-2]."</p>
</body></html>";
SetValueString('LogPaser',$myBigTable['datum'][count($myBigTable['id'])-2]." - ".$myBigTable['zeit'][count($myBigTable['id'])-2]." - ".$myBigTable['text'][count($myBigTable['id'])-2])
?>