[PHP] SimpleLogger - Ein einfache Logger-Klasse

[PHP] SimpleLogger - Ein einfache Logger-Klasse

c0mecl4rity

Grünschnabel
[PHP] SimpleLogger - Ein einfache Logger-Klasse - Jeder Entwickler sollte eine Logging-Infrastruktur besitzen

Und dann wäre es schön, wenn diese Infrastruktur einem Standard folgt. ;)
http://www.php-fig.org/psr/psr-3/

PHP:
...
const EMERGENCY = 'emergency';
const ALERT     = 'alert';
const CRITICAL  = 'critical';
const ERROR     = 'error';
const WARNING   = 'warning';
const NOTICE    = 'notice';
const INFO      = 'info';
const DEBUG     = 'debug';
...

Also ich würde die Log-Level noch dementsprechend anpassen.
 

saftmeister

Nutze den Saft!
Jetzt neu:

- Die PSR-Loglevel eingebaut
- Eine Funktion zum Dumpen von beliebigen PHP-Objekten hinzugefügt => dump() nutzt Loglevel DEBUG.
- Bugfixing beim evaluieren des übergebenen Levels
 

Parantatatam

mag Cookies & Kekse
Was man noch schöner machen könnte, wäre diese Stelle in der Methode "log":
PHP:
else if ($level != self::DEBUG && $level != self::INFO && $level != self::NOTICE &&
  $level != self::WARNING && $level != self::ERROR && $level != self::CRITICAL &&
  $level != self::ALERT && $level != self::EMERGENCY)
{
  $level = self::ERROR;
}
Schöner wäre das hier:
PHP:
elseif ( $level & 255 === 0 ) {
  $level = self::ERROR;
}

Nachtrag: Um es noch eindeutig zu machen, könnte man auch noch eine Konstante self::ALL mit dem Wert 255 definieren.
PHP:
self::ALL = 255; # self:DEBUG | self::INFO | self::NOTICE | self:WARNING | self::ERROR | self::CRITICAL | self::ALERT | self::EMERGENCY
 
Zuletzt bearbeitet:

saftmeister

Nutze den Saft!
Danke für die Anregung, die 2km-lange if-condition war mir auch schon ein Dorn im Auge ;-) Gut, dass da mehrere Leute drauf schauen. Wird in die nächste Version eingebaut.
 

demo1987

Mitglied
Kann man mir mal kurze Beispiel nennen wie ich das in meinen Skript nutze? Ich bin noch nicht so ein großer PHP Experte, würde aber ein Logging gerne schon von Anfang an einsetzen.
 

saftmeister

Nutze den Saft!
Hallo, danke für das Interesse. Hier mal ein Beispiel. Ich gehe davon aus, dein Script liegt zusammen mit der SimpleLogger.php (mit dem Inhalt aus dem Artikel) im gleichen Ordner:

PHP:
<?php
// SimpleLogger einbinden:
require 'SimpleLogger.php';

// hier kommt dein Code....

SimpleLogger::debug("Ich in eine Debugging-Zeile");

// und noch mehr code....

SimpleLogger::error("Ein Fehler ist aufgetreten");
 

demo1987

Mitglied
was hat es denn dann mit den logleveln auf sich? In diesem beispielen übergebe ich ja nur den message wert oder verstehe ich das falsch?