{% else-1 %}
Не нашел, почему-то ни одного логгера... (или ищу криво, наверное). Поэтому решил добавить простой логгер исключений. Может, понадобится тому, кто в скрипте исключения обрабатывает.
Делает подобные записи:

It caused an exception:
Date: 18-05-2015; Time:07:14:46
File: /var/www/dcms.loc/index.php
Line: 39
Code: 0
Message: ERROR
Tracing:
#0 /var/www/site.loc/index.php(42): b()
#1 /var/www/site.loc/index.php(45): a()
#2 {main}

а код вполне прост.

                        
/**
* Ниже код самого класса.
*@author elidann
*/
class GlobalException extends Exception {
private $log;
public function __construct( $message, $code = null, $previous = null ) {
parent::__construct( $message, $code, $previous );
/*
* Имя файла в формате: <день>-<месяц>-<год>.log
* не забываем указать директорию для записи логов относительно
* вызывающего скрипта. Конечно, для этой директории должны стоять права
* как минимум 666. Иначе нифига работать не будет.
*/
$filename = 'tmp/'.date( 'd-m-Y' ).'.log';
if( !file_exists( $filename ) ) {
$this->log = fopen( $filename, 'wt' );
} else {
$this->log = fopen( $filename, 'a+t' );
}
flock( $this->log, LOCK_EX );
// Вызываем записывающую функцию
$this->write_log();
}
private function write_log() {
// Собираем строку, которую будем записывать
$content = "nIt caused an exception:n";
$content .= "Date: ".date( 'd-m-Y' )."; Time:".date( 'H:i:s' )."n";
$content .= "File: ".$this->file."n";
$content .= "Line: ".$this->line."n";
$content .= "Code: ".$this->code."n";
$content .= "Message: ".$this->message."n";
$content .= "Tracing: n".$this->getTraceAsString()."n";
fwrite( $this->log, $content );
fclose( $this->log );
}
}
// Использование
try {
<действия>
throw new GlobalException(); // выбрасываем исключение
} catch( GlobalException $ge ) {
<тут при необходимости производим дополнительную обработку, например, выводим страницу ошибки>
}
0 46 0
Без комментариев...