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^^