IPSLogger - mein kleiner feiner LogHandler für IPS

@Tetrapack

Für die Deinstallation des alten Loggers, einfach alle Schritte aus der Installation Anleitung Schritt für Schritt rückgängig machen.

Migration auf den neuen Logger, siehe Migration

Ah! DANKE Brownson!
Library lief ja bereits, der Vorgang „an sich“ war mir auch klar, die Verbindung zur DEV-Version hat mir geistig gefehlt … Wald … Bäume … :o

Das ist alles richtig aber PHP unterscheidet ja nicht umsonst zwischen den ganzen Fällen und wenn ich im Logger eingestellt habe, dass ich ab Stufe „Error“ alles sehen möchte (und auch eine Meldung oben im WF ab „Error“ kommt) dann sollte die auch erst bei einem PHP „Error“ kommen und nicht schon bei einer „Warning“.

Gleiches gilt für Konstrukte wie „Try - Catch“. Wenn ich die benutze und die Fehler mit dem Catch Block abfange dann macht es keinen Sinn den Fehler, der in dem Try Block aufgetreten ist im WF anzuzeigen, wohl aber ihn zu loggen.

Ich denke im WF sollte wirklich nur das aufpoppen, was zu einer wirklichen Ausnahme und dem Abbruch des Skriptes geführt hat.

Hi Leute,

Ich bin dabei die IPS Library zu installieren und habe den 2. Schritt von der Wiki Beschreibung durchgeführt. Sieht soweit ganz gut aus. Wollte auch gleich mal das Email versenden testen und habe dafür mal folgendes Skript von Post

http://www.ip-symcon.de/forum/threads/12590-IPSLogger-mein-kleiner-feiner-LogHandler-f%C3%BCr-IPS?p=105656#post105656

ausgeführt:

   include_once "IPSLogger_Constants.ips.php"; 
    include_once "IPSLogger_Output.ips.php"; 

    Include "IPSLogger.ips.php"; 

   define ("c_LogId", "My"); 

   IPSLogger_Inf(c_LogId, "Info"); 
   IPSLogger_Err(c_LogId, 'Error'); 
    IPSLogger_Fat(c_LogId, 'Fatal'); 
    IPSLogger_Wrn(c_LogId, 'Warning'); 
    IPSLogger_Dbg(c_LogId, 'Debug'); 
    IPSLogger_Com(c_LogId, 'Comment'); 
    IPSLogger_Tst(c_LogId, 'Test'); 
    IPSLogger_Trc(c_LogId, 'Trace');  

Leider bekomme ich hier folgende Fehlermeldung:

Warning:  include_once(IPSLogger_Constants.ips.php): failed to open stream: No such file or directory in C:\IP-Symcon\scripts\23474.ips.php on line 2

Warning:  include_once(): Failed opening 'IPSLogger_Constants.ips.php' for inclusion (include_path='.;C:\php\pear') in C:\IP-Symcon\scripts\23474.ips.php on line 2

Warning:  include_once(IPSLogger_Output.ips.php): failed to open stream: No such file or directory in C:\IP-Symcon\scripts\23474.ips.php on line 3

Warning:  include_once(): Failed opening 'IPSLogger_Output.ips.php' for inclusion (include_path='.;C:\php\pear') in C:\IP-Symcon\scripts\23474.ips.php on line 3

Warning:  include(IPSLogger.ips.php): failed to open stream: No such file or directory in C:\IP-Symcon\scripts\23474.ips.php on line 5

Warning:  include(): Failed opening 'IPSLogger.ips.php' for inclusion (include_path='.;C:\php\pear') in C:\IP-Symcon\scripts\23474.ips.php on line 5

Woran könnte das liegen?


	IPSUtils_Include ("IPSLogger.inc.php", "IPSLibrary::app::core::IPSLogger");
	IPSLogger_Inf(__file__, 'My Test Message ...');

Hi Andreas,

kann ich den Loger auch im Dashboard nutzten/laufen lassen ?

Gruß Uwe

Hi Andreas,

DANKE für die rasche Rückmeldung. PERFEKT!!! Jetzt funzts :slight_smile:

Hallo,

ein kleiner Fehler, den ich bemerkt habe:

In der IPSLogger_PurgeLogFiles.ips.php wird auf Zeile 20 der falsche Parameter übergeben. Somit werden die XML Logfiles nur dann gelöscht, wenn auch das File Logging aktiv ist.

//PurgeLogFiles(c_Log4IPS_Directory, c_Log4IPS_Extension, c_ID_FileOutEnabled, c_ID_Log4IPSOutDays);
  PurgeLogFiles(c_Log4IPS_Directory, c_Log4IPS_Extension, c_ID_Log4IPSOutEnabled, c_ID_Log4IPSOutDays);

Viele Grüße

Burkhard

Danke, habs korrigiert…

Hallo Andreas,

ich habe erfolgreich den Prowl Dienst in Betrieb bekommen. War wirklich easy. Besten Dank dafür.

Nun versuche ich aber bislang vergeblich, die Prowl-Priorität zu setzen. Ich möchte gern den Feueralarm stärker (ProwlPrio=2) signalisiert bekommen als die Fetigmeldung der Waschmaschine (ProwPrio=-1).

Leider finde ich keine Möglichkeiten, die Prio entsprechend zu setzen. Sie wird komplett ignoriert und alle Meldungen werden mit Prio 0 verschickt. Ich habe auch schon versucht, die Übergabewerte der $prowl->push Methode zu modifizieren. Hat aber auch nichts gebracht.

Hast du eine Idee?

Viele Grüße

Burkhard

Hallo Burkhard,

Die Prioritäten von Prowl sind derzeit nicht direkt in Verwendung. Man kann aber bei jeder Notify Message beim IPSLogger eine Priorität angeben und im WebFront dann für den Prowl Output festlegen, welche Prioritäten über diesen Output gesendet werden sollen - sollte eigentlich den selben Effekt haben.

Hallo Andreas,

Ich hatte vor, mich sowohl bei Feueralarm als auch bei Programmende der Waschmachine über Prowl benachrichtigen zu lassen. Auf dem Handy lässt sich dann für jede Priorität das passende Klingelzeichen einstellen, von „Alarm“ bis „nur vibrieren“.

Es wäre schön, wenn es dazu eine Möglichkeit gäbe.

Viele Grüße

Burkhard

OK, verstanden, versuch mal folgende Änderung in der Prowl Funktion:


	function IPSLogger_OutProwl($LogLevel, $LogType, $Context, $Msg, $Priority) {
		if (GetValue(c_ID_ProwlOutEnabled) and
			GetValue(c_ID_ProwlOutLevel) >= $LogLevel and
			 GetValue(c_ID_ProwlOutPriority) >= $Priority) {
			include_once('ProwlPHP.php');

			$prowl = new Prowl(c_Key_ProwlService); 
			$prowl->push(array(	'application'	=> 'IP-Symcon',
 										'event'			=> $Context,
										'description'	=> utf8_encode($Msg),
										'priority'		=> $Priority));
		}
	}

damit könnte es klappen.

Super, so funktioniert es.

Ich habe es noch etwas erweitert und bin nun glücklich:loveips:

			switch ($Priority){
			   case 0: $ProwlPriority = 0; break; //Meldungen <> Notifications haben keine Priorität
			   case 1: $ProwlPriority = 2; break;
			   case 2: $ProwlPriority = 1; break;
			   case 3: $ProwlPriority = 0; break;
			   case 3: $ProwlPriority = -1; break;
			   default: $ProwlPriority = -2;
			}

			$prowl = new Prowl(c_Key_ProwlService);
			$prowl->push(array(	'application'	=> 'IP-Symcon',
 										'event'			=> $Context,
										'description'	=> utf8_encode($Msg),
										'priority'		=> $ProwlPriority));

Besten Dank für Deine Hilfe!

Gruß

Burkhard

Hallo!

Ich würde gerne IPS-Logger installieren, finde aber keine aktuelle Version zum Download. Kann mir da bitte jemand weiterhelfen?

Danke,
Hugo

Gibt es nicht mehr einzeln

http://www.ip-symcon.de/wiki/BaseLoader

Gruß
Bruno

Dankeschön!

Ein Problem habe ich noch (passt das wenn ich das hier poste?)
Nach der Installation kommt beim Webfront die Fehlermeldung
„Fatal error: Cannot redeclare IPSLogger_PhpErrorHandler() (previously declared in C:\Program Files\IP-Symcon\scripts\IPSLogger_PhpErrorHandler.ips.php:2) in C:\Program Files\IP-Symcon\scripts\IPSLibrary\app\core\IPSLogger\IPSLogger_PhpErrorHandler.inc.php on line 102“

Wenn ich die Datei __autoload.php umbenenne geht Webfront wieder, aber dafür geht das IPSModuleManagerGUI nicht.

Eine Idee wie ich das hinkriege?

Da ist wohl noch die alte Version installiert …

Forensuche hat ergeben :rolleyes:

Der Link betrifft wohl eher die alte Version, dann vielleicht doch mal im ModulManager den IPSLogger löschen und neu installieren. Alternativ auf die Aussage von Andreas warten.

Hallo zusammen,

bin eigentlich durch den Wunsch das Fußbodenheizungsscript von MWS auszuprobieren dazu gekommen
den IPSlogger zu installieren.

Habe IPSYMCON 2.7 drauf, den Baseloader über das Script sowie die IPSLIBARY installiert.

Ich sehe im Webfront auch die Fehlermeldungen.

Nun möchte ich die Werte aus dem Fupbodenheizungsscript loggen.

"include_once „IPSLogger.ips.php“; "

„IPSLogger_Dbg (file, „Raum '“.$room[‚Name‘].“’ => Soll: ".$sollwert."°C, Ist: ".$istwert.„°C, Aktor: „.($pwm / 60 * 10).“%“); "

Wenn ich den „Include_once“ Aufruf drin habe bekomme ich die Meldung das die Datei fehlt. Diese ist auch nicht im Script-Verzeichnis vorhanden.

Wenn ich den Include_once weglasse kommt:

„Call to undefined Function IPSLogger_Dbg“

Habe ich bei der Installation was falsch gemacht oder muss ich die Funktion anders aufrufen ??
Die Fehlermeldungen aus dem Script werden im Webfront angezeigt. Also funktioniert der IPSLOGGER wohl grundsätzlich

Gruß

Udo Bohrer

Das Include Statement sollte so aussehen


	IPSUtils_Include ("IPSLogger.inc.php",  "IPSLibrary::app::core::IPSLogger");

danach sollte es funktionieren.