Commit 121c77ff authored by Taddeus Kroes's avatar Taddeus Kroes

Added more dump options to Logger.

parent ae736bed
......@@ -9,6 +9,8 @@
namespace WebBasics;
require_once 'base.php';
/**
* Logger class.
*
......@@ -16,13 +18,14 @@ namespace WebBasics;
*
* @package WebBasics
*/
class Logger {
class Logger extends Base {
const CRITICAL = 0;
const ERROR = 1;
const WARNING = 2;
const INFO = 3;
const DEBUG = 4;
static $level_names = array('CRITICAL', 'ERROR', 'WARNING', 'INFO', 'DEBUG');
private static $allowed_dump_formats = array('plain', 'html', 'file');
const DEFAULT_FORMAT = '%(datetime): %(level): %(message)';
......@@ -30,6 +33,19 @@ class Logger {
private $output = array();
private $format = self::DEFAULT_FORMAT;
private $level = self::WARNING;
private $dump_format = 'plain';
private $log_directory = '';
function set_directory($directory) {
$this->log_directory = self::path_with_slash($directory);
}
function set_dump_format($format) {
if( !in_array($format, self::$allowed_dump_formats) )
throw new InvalidArgumentException(sprintf('', $format));
$this->dump_format = $format;
}
function set_format($format) {
$this->format = (string)$format;
......@@ -119,8 +135,18 @@ class Logger {
return $output;
}
function dump() {
function dump($file_prefix='log') {
switch( $this->dump_format ) {
case 'plain':
echo $this->dumps();
break;
case 'html':
echo '<strong>Log:</strong><br />';
echo '<pre>' . $this->dumps() . '</pre>';
break;
case 'file':
$this->save(sprintf('%s_%s.log', $file_prefix, strftime('%d-%m-%Y_%H-%M-%S')));
}
}
function clear() {
......@@ -128,7 +154,10 @@ class Logger {
}
function save($path) {
file_put_contents($path, $this->dumps());
if( $this->log_directory && !is_dir($this->log_directory) )
mkdir($this->log_directory, 0644, true);
file_put_contents($this->log_directory . $path, $this->dumps());
}
function handle_exception(\Exception $e) {
......@@ -138,7 +167,7 @@ class Logger {
$message = sprintf("Uncaught %s in file %s, line %d: %s\n\n%s", get_class($e),
$e->getFile(), $e->getLine(), $e->getMessage(), $e->getTraceAsString());
$this->critical($message);
$this->dump();
$this->dump('error');
}
function set_as_exception_handler() {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment