我建立一個記錄器類,可以讓我輕鬆地記錄消息:
lib.Logger.php:
<?php
class Logger {
private $handle;
public function __construct($log_name, $log_path) {
if (! is_dir($log_path))
throw new Exception('Log path does not exist.');
if (! in_array(strtolower(substr($log_name, 0, -4)), array('.log', '.txt')))
$log_name = "{$log_name}.log";
$this->handle = fopen("{$log_path}/{$log_name}", 'a');
$this->log('------------- Initializing ------------- '.get_parent_class($this));
}
// --------------------------------------------------------------------
public function __destruct() {
fclose($this->handle);
}
// --------------------------------------------------------------------
public function log($message) {
$time = date(DATE_RFC822);
$log = "[{$time}] {$message}\n";
fwrite($this->handle, $log);
}
}
?>
而且我把這種使用:
MyController.php:
<?php
class MyController extends Controller {
$logger = new Logger('testlog','/path/to/logs/');
$logger->log('Logs are fun!');
}
?>
當我在itialize對象:
$this->log('------------- Initializing ------------- '.get_parent_class($this));
我要記錄的對象(或文件)的名稱與調用日誌() - 在這種情況下,無論是
MyController或
/path/to/MyController.php。
我試過使用get_parent_class(),但當然這不起作用,因爲記錄器本身沒有父類。
任何想法?十分感謝你的幫助!
亞歷克斯·B