/**
* Speichert Informationen ins syslog (Ereignisprotokoll bei Windows).
*/
class logging {
/**
* Private Eigenschaft
* Speichert den Identstring des Protokolls
* @var string
*/
private $filename;
/**
* Protokollpfad
* @var string
*/
private $filepath;
/**
* Oeffentlicher Konstruktor
* Initialisiert eine neue Instanz der Klasse
* @param string $filename
*
Optional, der Identstring fuer's Protokolls (Standard: dampflok.log)
*/
public function __construct($filename = 'dampflok.log') {
global $cfg;
if (empty($filename)) {
$filename = 'dampflok.log';
}
$this->filename = $filename;
$this->filepath = $cfg['logfilepath'];
}
/**
* Aendert den Identstring des Protokolls
* @param string $filename
*
Der neue Identstring
*/
public function changeFilename($filename) {
if (!empty($filename)) {
$this->filename = $filename;
}
}
/**
* Schreibt einen Text in die Protokolldatei
* @param string $text
*
Der Text der in die Datei geschrieben werden soll
*/
public function write($text) {
if (strtolower(PHP_OS) == 'linux') {
//define_syslog_variables();
openlog($this->filename, LOG_PID, LOG_LOCAL0);
syslog(LOG_INFO, $text);
closelog();
}
else {
// windowsprotokolle sind einfach sch***
//openlog($this->filename, LOG_PID, LOG_INFO);
$this->writefile($text);
}
}
/**
* Schreibt einen Text in die Protokolldatei
* @param string $text
*
Der Text der in die Datei geschrieben werden soll
*/
private function writefile($text) {
global $cfg;
if ($this->ensureLogpath($this->filepath)) {
if ($cfg['logfiletimestamp']) {
if (strpos($this->filename, '.') === false) {
$file = $this->filename . '.' . date('Ymd') . '.log';
}
else {
$file = substr($this->filename, 0, strrpos($this->filename, '.') + 1);
$file .= date('Ymd') . substr($this->filename, strrpos($this->filename, '.'));
}
}
if ($fp = fopen($this->filepath . '/' . $file, 'a')) {
$text = str_ireplace("\n", "\n \t", $text);
fwrite($fp, date('d.m.Y H:i:s') . "\t" . $text . "\r\n");
fclose($fp);
}
}
}
/**
* Stellt sicher, dass der Protokollpfad existiert.
* @return boolean
*
Gibt true zurueck wenn der Pfad existiert oder erstellt wurde.
*/
private function ensureLogpath($dir) {
if (is_dir($dir) || @mkdir($dir)) { return true; }
if (!$this->ensureLogpath(dirname($dir))) { return false; }
return @mkdir($dir);
}
}
?>