PHP: Quick Logging

Logging in PHPEigentlich bin ich nicht so der Freund von DO-IT-YOURSELF Lösungen, aber heute musste es schnell gehen. Es geht ums Logging in PHP. An dieser Stelle sei Log4PHP erwähnt. Wer mehr Zeit hat sollte unbedingt dieses oder ein anderes Logging-Framework von PHP (KLogger, Monolog, Log5PHP oder Analog) verwenden! (Hier ist der Link zum Quickstart)
Nun komme ich zu meiner 30-Zeilen-Lösung:

 

Die Logger – Klasse

<?php
class Logger
{
	public static $LOG_DEBUG = "DEBUG";
	public static $LOG_INFO = "INFO";
	public static $LOG_WARNING = "WARNING";
	public static $LOG_ERROR = "ERROR";
	
	
	//Logger::log("Nachricht", Logger::$LOG_DEBUG, __FILE__, __FUNCTION__, __LINE__);
	public static function log($message, $level, $datei, $methode, $line)
	{
		//Objekte serialisieren
		if(!is_string($message)){
			$message = serialize($message);
		}

		// Pattern
		$datum = date("d-m-Y H:i:s");
		//2012-07-25 11:00:15 DateiXY(43) - MethodeXY: LEVEL Die Nachricht
		$erg = $datum." ".$datei."(".$line.") - ".$methode.": ".$level." ".$message."\n";

		// Der erste Teil, also "../log/", gibt den Speicherort an!
		$datei_handle = fopen("../log/".date("d-m-Y").".log", "a+");
		fputs($datei_handle, $erg);
		fclose($datei_handle);
	}

}
?>

Nicht sehr spektakulär, aber extrem funktional!

 

Aufruf und Ausgabe

hier gibt es nicht viel zu sagen.
Der Aufruf

require_once dirname(__FILE__) . "dateiMitderKlasseOben.php";
//...


Logger::log("Samsung Galaxy S3", Logger::$LOG_DEBUG, __FILE__, __FUNCTION__, __LINE__);
Logger::log(array("iPhone", "Galaxy", "iPad", "Amazon Fire 2"), Logger::$LOG_DEBUG, __FILE__, __FUNCTION__, __LINE__);

//...

Das Ergebnis

27-07-2012 13:45:42 C:\Dokumente und Einstellungen\meinUser\Desktop\projekt\src\function.php(23) - : DEBUG Samsung Galaxy S3
27-07-2012 14:03:58 C:\Dokumente und Einstellungen\meinUser\Desktop\projekt\src\function.php(24) - : DEBUG a:4:{i:0;s:6:"iPhone";i:1;s:6:"Galaxy";i:2;s:4:"iPad";i:3;s:13:"Amazon Fire 2";}

 

nette Features

  • Sehr informatives Pattern:-)
  • Man kann eine Meldung (String) oder ein Objekt, Array, etc. loggen
  • Jeden Tag wird eine neue Log-Datei angelegt (Kann beliebig angepasst werden: stündlich, wöchentlich, monatlich, usw.)
  • Es gibt verschiedene Log-Level

 

Bildquelle

  • Christian Seidel – pixelio.de

 

Copyright © 2012 AxxG – Alexander Gräsel



2 Antworten : “PHP: Quick Logging”

  1. Pascal sagt:

    Wofür hast du das so schnell gebraucht?

    Hat WordPress nicht ein eingebautes Logging was man nutzen kann?

Kommentar verfassen