IPSLogger - mein kleiner feiner LogHandler für IPS

Moin zusammen,

nachdem ich mich lange vor der Installation der IPSLibrary gedrückt habe, habe ich gestern nun alles erfolgreich in Betrieb nehmen können. Vielen Dank für dieses geniale Konstrukt!

Ist es geplant, das Logging in eine mySQL-Datenbank zu ermöglichen?

Grüße,
Christoph

Hallo Christoph,

bis jetzt noch nicht, wenn Du aber ein Example zur Verfügung stellst, wie man eine MySQL Tabelle beschreibt und was man benötigt, dann kann ich ja vielleicht was realisieren.

Folgende Felder würde man wohl im Minimum benötigen:

  • LogMsg (Text)
  • LogType (Integer oder Text)
  • LogContext (Text)
  • Timestamp (Text oder Timestamp)

Ich beobachte die MySQL-Diskussion gespannt.

Auch ich waere fuer eine MySql Anbindung.
Kann auch dafuer etwas beitragen. Hab in meinem PlugwiseModul eine automatische
Datenbankerstellung und Tabellenerstellung.
Eintrag von den Zugangsdaten in der Konfig reicht.
Fuer den Logger braeuchte ich wirklich nicht viel umschreiben.

Gesendet von meinem iPad mit Tapatalk HD

Ich kann mich diesbezüglich erst nächste Woche wieder melden …

Gruß, Christoph

Gesendet von meinem iPad mit Tapatalk HD

Hallo Leute,

es gibt eine erste Version des Loggers mit MySQL Anbindung - Besten Dank an dieser Stelle an 1007, der den Hauptteil der Arbeit erledigt hat.
Zu finden ist der neue Logger vorerst mal auf meinem NewFeatures Repository
–> also Update mittels IPSModuleManager:


	IPSUtils_Include ("IPSModuleManager.class.php", "IPSLibrary::install::IPSModuleManager");
	$moduleManager = new IPSModuleManager('IPSLogger', 'https://raw.github.com/brownson/IPSLibrary/NewFeatures');
	$moduleManager->UpdateModule();

Folgende Konfigurations Parameter sind nötig (muss man manuell in Config File hinzufügen, wenn der Logger bereits installiert ist:


	/** Konfigurations Parameter für MySQL Output
	 *
	 * Über diesen Parameter wird gesteuert, ob die Meldungen auch auf den MySQL Output geschrieben werden soll.
	 *
	 * Parameter kann jederzeit geändert werden.
	 */
	define ("c_DB_MySQL_Enabled",    false);

	/** Konfigurations Parameter für MySQL
	 *
	 * Über diesen Parameter wird gesteuert, welche Meldungen auf den MySQL Output geschrieben werden
	 *
	 * Parameter kann jederzeit geändert werden.
	 */
	$DB_MySQL_LogTypes  = array(true/*Fat*/, true/*Err*/, true/*Wrn*/, true/*Not*/, true/*Inf*/, true/*Log*/, true/*Dbg*/, true/*Trc*/, false/*Tst*/);
	
	/** Konfigurations Parameter für MySQL Output
	 *
	 * Serveradresse
	 * Port
	 * Database
	 * Tabellenname
	 * User
	 * Password
	 *
	 * Parameter koennen jederzeit geändert werden.
	 */
	define ("c_DB_MySQL_Server", "192.168.1.1" );
	define ("c_DB_MySQL_Port", "3306" );
	define ("c_DB_MySQL_Database", "IPSLogger" );
	define ("c_DB_MySQL_Table", "tbl_IPSLog" );
	define ("c_DB_MySQL_User", "xxxxxx" );
	define ("c_DB_MySQL_Password", "xxxxxx" );

Analog zur Integration von SysLog wird das Ganze auch hier rein über die Konfigurations Parameter gesteuert (also keine Integration der Einstellungen im WebFront).

Mit dem Parameter c_DB_MySQL_Enabled kann man den Output ein- bzw. ausschalten. Mit $DB_MySQL_LogTypes kann man steuern welche LogTypen aktiviert sind.
Der Rest ist für die DB Anbindung.

Hallo zusammen,
danke für die MySQL Anbindung des Loggers. Komme gerade nicht dazu das einzurichten und zu testen. Melde mich wieder mit den Ergebnissen.

Da bin ich wohl zu spät gekommen … Sorry!

Habe die mySQL Anbindung gestern erfolgreich in Betrieb genommen. Vielen Dank an alle Beteiligten!

Gruß,
Christoph

Hiho,

ich weiß doofe Frage, gibts ne möglichkeit den Error Log nicht im Webfront anzuzeigen ?
Also manche Logging Level komplett ausblenden ?

Gruß
Flobo

Hallo Flobo,

Ne, das geht zur Zeit nicht.

Ich vermute mal, Du hast jede Menge Fehler im System und möchtest diese nicht immer angezeigt bekommen oder?
Was sind das für Fehler, wieso kannst Du sie nicht „abfangen“?

Hiho,

das trifft den Nagel auf den Kopf :slight_smile: … da ich jeeede Menge www Reader und Textparser am laufen habe kommts hier vermutlich von Netzwerkproblemen ( bzw. kein Problem sondern 24 Stunden Disconnect und Refresh DynDns. ).
Dazu muss man wissen ich lese eine GLT über einen VPN Tunnel aus, da kanns natürlich mal zu Disconnects kommen.
Da ich aber den Logger und die Anzeige nutzen will Störungen anzuzeigen ist es natürlich unschön wenn da ein paar Hundert Meldungen wegen dem www Reader drinnen sind.

Da ich das alles allerdings über Instanzen ( www Reader Instanz mit Ereignis alle 2 Min Update Page + Text Parser ) betreibe sehe ich da wenig Optionen das Log sauber zu halten oder ?

Gruß

Ok, dh. Du kannst die Fehler mit dem „@“ Operator nicht unterdrücken.

… dann mach mal auf die Schnelle einen kleinen Hack in der Funktion IPSLogger_Out (zu finden im File IPSLogger_Output.inc.php).


    function IPSLogger_Out($LogLevel, $LogType, $Context, $Msg, $Priority=0) {
        if (strpos($Msg, 'Warning: HTTP/1.1 500 Server Error') !== false) return;
        ...

Alternativ kannst Du die Zeile auch in der Funktion IPSLogger_OutHTML eintragen, dann wird der Error nur für den WebFront Output unterdrückt.

Eventuell werde ich in einer zukünftigen Version mal Callback Funktionen anbieten, mit denen man so etwas realisieren kann.

Hi Brownson,

funktioniert wunderbar :slight_smile: kein Rumgespamme meiner Reader mehr.
Vielen lieben dank.

Hi

ich verwende zwar die IPSLibrary nicht, aber den IPLogger sehr wohl :D. Könnte gar nicht mehr ohne auskommen.

Aber bei meinen z.T. umfangreichen Ausgaben via _Dbg oder _Trc hatte ich immer wieder das Problem, das ich nicht einfach sehen konnte was alles dazu gehört, weil die Tabelle im WF ja ohne Zeilen- und Spaltenrahmen daherkommt.

Drum hab ich mir das mal angeguckt und kurzerhand eine kleine Änderung hinzugefügt, die eine ganz leichte Einfärbung beim hovern über der Zeile hinzufügt. Und damit das auch die Hinbekommen, die nicht so die CSS-Cracks sind hier die notwendigen Anpassungen:

  1. In der Datei IPSLogger_Output.inc.php die Zeile 226 anpassen:
$TablePrefix = '<table width="100%" style="'.c_Style_HtmlOutTable.'">';

ändern in:

$TablePrefix = '<table width="100%" class="row-highlight" style="'.c_Style_HtmlOutTable.'">';
  1. In der entsprechenden webfront.css folgenden Block irgendwo hinzufügen:

/* Klasse zur hervorhebung einer Tabellenzeile :hover, muss dem Tag <table> hinzugefügt werden */
.row-highlight tr:hover {
    background-color: rgba(255, 255, 255, 0.1);
}

Jetzt das WebFront neu laden und schon werden die Tabellenzeilen mit einer leichten Aufhellung hinterlegt, wenn die Maus drüber steht…

PS: Diese Klasse kann natürlich auch bei jeder anderen Tabelle Verwendung finden.

gefällt mir :slight_smile:

hab das mal in dieser Form übernommen:


$TablePrefix   = '<style>.row-highlight tr:hover {background-color: rgba(255, 255, 255, 0.1);} </style> 
                  <table width="100%" class="row-highlight" style="'.c_Style_HtmlOutTable.'">';

Hui,

war mir gar nicht bewusst das man styles auch einfach direkt an Ort und Stelle unterbringen kann. Kannte das bisher nur im <head>-Bereich.

Aber freut mich das es gefällt (und ich so auch einen „kleinen“ Teil zur IPSLibrary beitragen konnte).

Nochmal meinen fetten Respekt :smiley: für all die Projekte die du da so ablieferst. Sind immer mindestens eine 1-A-Inspiration für eigene Projekte.

Servus,

eine kleine Ergänzung hätte ich noch anzubringen:

Wenn der hover auch für die Roten Error-Einträge wirksam werden soll dann muss der Style wie folgt angepasst werden:

Von:


$TablePrefix   = '<style>.row-highlight tr:hover {background-color: rgba(255, 255, 255, 0.1);} </style> 
                 <table width="100%" class="row-highlight" style="'.c_Style_HtmlOutTable.'">';

auf:


$TablePrefix   = '<style>.row-highlight tr:hover {
                             background-color: rgba(255, 255, 255, 0.1) !important;
                             color:#808080 !important;
                  }</style> 
                  <table width="100%" class="row-highlight" style="'.c_Style_HtmlOutTable.'">';

Das war mir bisher nicht aufgefallen, weil der Logger immer mit meinem Trace-gespamme voll war :D.

Hi Leute,

Seit einiger Zeit (ich bilde mir ein, ab IPS3.0) zeigt mir das Widget nicht mehr alles an:

Hat jemand ne Idee an was das liegen könnte? :confused:

@Sunni

ja, das ist normal, im neuen WebFront sind die Widgets auf eine maximale Breite beschränkt.

@Thorsten

habs übernommen …