Logger behaviour change

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

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

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

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

@ -42,7 +42,7 @@
* @author Josh Lockhart <info@joshlockhart.com> * @author Josh Lockhart <info@joshlockhart.com>
* @since Version 1.0 * @since Version 1.0
*/ */
class Slim_Logger { class Harmonious_Logger {
/** /**
* @var array Log levels * @var array Log levels
@ -184,7 +184,7 @@ class Slim_Logger {
throw new RuntimeException("Log directory '$dir' not writable."); throw new RuntimeException("Log directory '$dir' not writable.");
} }
if ( $level <= $this->getLevel() ) { 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