Logger behaviour change

master
parent 6e0753df18
commit a7159502bd
  1. 6
      Components/Memcached.php
  2. 16
      Harmonious.php
  3. 81
      Log.php
  4. 4
      Logger.php

@ -37,12 +37,12 @@ class Harmonious_Components_Memcached implements IHarmonious_Component{
function get($key, $usecas = false) {
$m = $this->get_server($key);
if (!$usecas) $ret = $m->get($key);
else $ret = $m->get($key, null, $cas);
else $ret = $m->get($key, null, Memcached::GET_EXTENDED);
if ($ret === false) $retcode = $m->getResultCode();
unset($m);
if ($ret === false) return array ('result'=>false, 'result_code'=>$retcode, 'result_string'=>$this->retcode2string($retcode));
$ret = array ('result'=>true, 'value'=>$ret);
if ($usecas) $ret['cas'] = $cas;
if (!$usecas) $ret = array ('result'=>true, 'value'=>$ret);
else $ret = array ('result'=>true, 'value'=>$ret, 'cas'=>$ret['cas']);
return $ret;
}

@ -133,12 +133,15 @@
try {
$this->applyHook('app.before', $this);
ob_start();
$this->applyHook('app.before.router', $this);
$httpMethod = $this->request->getMethod();
$uri = rtrim($this->request->getResourceUri(), "/");
if ($uri == '') $uri = '/index';
$controller_name = $this->config('controller_path') . $uri . "_controller.php";
$controller_class_name = substr($uri, strrpos($uri, '/') + 1) . "Controller";
$controller_class_name = str_replace('.', '_', $controller_class_name);
$hook_responce = $this->applyHook('app.before.router', array($this, $controller_name, $controller_class_name));
$controller_name = $hook_responce[1];
$controller_class_name = $hook_responce[2];
if (file_exists($controller_name)) {
include ($controller_name);
//создать экземпляр класса и проверить поддерживается ли http метод, если нет - ошибка 405
@ -336,17 +339,17 @@
/**
* Get application Log (lazy-loaded)
* @return Slim_Log
* @return Harmonious_Log
*/
public function getLog() {
if ( !isset($this->log) ) {
$this->log = new Slim_Log();
$this->log = new Harmonious_Log();
$this->log->setEnabled($this->config('log.enable'));
$logger = $this->config('log.logger');
if ( $logger ) {
$this->log->setLogger($logger);
} else {
$this->log->setLogger(new Slim_Logger($this->config('log.path'), $this->config('log.level')));
$this->log->setLogger(new Harmonious_Logger($this->config('log.path'), $this->config('log.level')));
}
}
return $this->log;
@ -706,7 +709,8 @@
foreach( $this->hooks[$name] as $priority ) {
if( !empty($priority) ) {
foreach($priority as $callable) {
$hookArg = call_user_func($callable, $hookArg);
if (is_array($hookArg)) $hookArg = call_user_func_array($callable, $hookArg);
else $hookArg = call_user_func($callable, $hookArg);
}
}
}
@ -770,6 +774,8 @@
* @throws ErrorException
*/
public static function handleErrors( $errno, $errstr = '', $errfile = '', $errline = '' ) {
if (isset($this)) $this->getLog()->error('handleErrors catched: '.$errstr);
if ( error_reporting() & $errno ) {
if (isset($this)) $this->getLog()->error('Unhandled Error: '.$errstr);
throw new ErrorException($errstr, $errno, 0, $errfile, $errline);

@ -50,12 +50,12 @@
* @author Josh Lockhart <info@joshlockhart.com>
* @since Version 1.0
*/
class Slim_Log {
class Harmonious_Log {
/**
* @var mixed An object that implements expected Logger interface
*/
protected $logger;
protected $loggers = array();
/**
* @var bool Enable logging?
@ -90,49 +90,34 @@ class Slim_Log {
return $this->enabled;
}
/**
* Log debug message
* @param mixed $object
* @return mixed|false What the Logger returns, or false if Logger not set or not enabled
*/
public function debug( $object ) {
return isset($this->logger) && $this->isEnabled() ? $this->logger->debug($object) : false;
}
/**
* Log info message
* @param mixed $object
* @return mixed|false What the Logger returns, or false if Logger not set or not enabled
*/
public function info( $object ) {
return isset($this->logger) && $this->isEnabled() ? $this->logger->info($object) : false;
}
/**
* Log warn message
* @param mixed $object
* @return mixed|false What the Logger returns, or false if Logger not set or not enabled
*/
public function warn( $object ) {
return isset($this->logger) && $this->isEnabled() ? $this->logger->warn($object) : false;
}
/**
* Log error message
* @param mixed $object
* @return mixed|false What the Logger returns, or false if Logger not set or not enabled
*/
public function error( $object ) {
return isset($this->logger) && $this->isEnabled() ? $this->logger->error($object) : false;
}
/**
* Log fatal message
* @param mixed $object
* @return mixed|false What the Logger returns, or false if Logger not set or not enabled
*/
public function fatal( $object ) {
return isset($this->logger) && $this->isEnabled() ? $this->logger->fatal($object) : false;
public function __call($name, $args) {
if ($this->isEnabled()) {
$name = strtolower($name);
$result = true;
foreach ($this->loggers as $logger) {
switch ($name) {
case 'debug':
if (!$logger->debug($args)) $result = false;
break;
case 'info':
if (!$logger->info($args)) $result = false;
break;
case 'warn':
if (!$logger->warn($args)) $result = false;
break;
case 'error':
if (!$logger->error($args)) $result = false;
break;
case 'fatal':
if (!$logger->fatal($args)) $result = false;
break;
default:
return false;
break;
}
}
return $result;
} else return false;
}
/**
@ -141,15 +126,15 @@ class Slim_Log {
* @return void
*/
public function setLogger( $logger ) {
$this->logger = $logger;
$this->loggers[] = $logger;
}
/**
* Get Logger
* @return mixed
*/
public function getLogger() {
return $this->logger;
public function getLoggers() {
return $this->loggers;
}
}

@ -42,7 +42,7 @@
* @author Josh Lockhart <info@joshlockhart.com>
* @since Version 1.0
*/
class Slim_Logger {
class Harmonious_Logger {
/**
* @var array Log levels
@ -184,7 +184,7 @@ class Slim_Logger {
throw new RuntimeException("Log directory '$dir' not writable.");
}
if ( $level <= $this->getLevel() ) {
$this->write(sprintf("[%s] %s - %s\r\n", $this->levels[$level], date('c'), (string)$data));
$this->write(sprintf("[%s] %s - %s\r\n", $this->levels[$level], date('c'), (string)$data[0]));
}
}

Loading…
Cancel
Save