Eigentlich 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:
<?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!
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";}
Hier ist eine kleine Erweiterung meines Loggers:)
<?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"; // Pfad und Dateiname! $logFileName = "log/eineDatei.log"; // Datei groesse einschraenken! $logsize = filesize($logFileName); // 100 MB - 104857600 if($logsize > 104857600){ $datei_handle = fopen($logFileName, "w+"); }else{ $datei_handle = fopen($logFileName, "a+"); } fputs($datei_handle, $erg); fclose($datei_handle); } } ?>
Copyright © 2012 AxxG – Alexander Gräsel
Wofür hast du das so schnell gebraucht?
Hat WordPress nicht ein eingebautes Logging was man nutzen kann?
Guter Hinweis, aber bei einem privaten Projekt, was nicht WP nutzt, gibt es sowas nicht^^