Пример #1
0
 public function __construct($options = null)
 {
     parent::__construct($options);
     if ($options instanceof \Traversable) {
         $options = ArrayUtils::iteratorToArray($options);
     }
     if (is_array($options)) {
         if (!empty($options['stream'])) {
             if (!is_array($options['stream'])) {
                 $options['stream'] = ['uri' => $options['stream']];
             }
             if (!empty($options['stream']['uri'])) {
                 $writer = new Stream($options['stream']['uri']);
                 if (!empty($options['stream']['priority'])) {
                     $filter = new Priority($options['stream']['priority']);
                     $writer->addFilter($filter);
                 }
                 $this->addWriter($writer);
             }
         }
         if (!empty($options['slack'])) {
             $writer = new SlackWriter($options['slack']);
             $this->addWriter($writer);
         }
         if (!empty($options['register_error_handler'])) {
             Logger::registerErrorHandler($this);
         }
         if (!empty($options['register_exception_handler'])) {
             Logger::registerExceptionHandler($this);
         }
     }
 }
Пример #2
0
 /**
  * @param $log_path
  * @return ZendLogger
  */
 public static function getLogger($log_path)
 {
     if (!self::$logger) {
         #region ディレクトリ生成
         $date = date('Ym');
         $error_dir = $log_path . 'error/' . $date . '/';
         $info_dir = $log_path . 'info/' . $date . '/';
         if (!file_exists($error_dir)) {
             @mkdir($error_dir, 0777);
         }
         if (!file_exists($info_dir)) {
             @mkdir($info_dir, 0777);
         }
         #endregion
         #region log初期設定
         $logger = new ZendLogger();
         $writer_err = new Stream($error_dir . date('Y-m-d') . '.log');
         $writer_info = new Stream($info_dir . date('Y-m-d') . '.log');
         //エラーログの出力レベル変更
         $filter = new Priority(ZendLogger::WARN);
         $writer_err->addFilter($filter);
         $logger->addWriter($writer_err);
         $logger->addWriter($writer_info);
         #endregion
         self::$logger = $logger;
     }
     return self::$logger;
 }
Пример #3
0
 /**
  * @param Stream $writer
  * @param array $config
  */
 protected function addPriorityFilter(Stream $writer, array $config)
 {
     if (isset($config['priority'])) {
         $filter = new Priority($config['priority']);
         $writer->addFilter($filter);
     }
 }
 public function createService(ServiceLocatorInterface $serviceLocator)
 {
     $config = $serviceLocator->get('Config');
     $config = isset($config['log']['ErrorLogger']['config']) ? $config['log']['ErrorLogger']['config'] : array();
     if (!isset($config['stream'])) {
         throw new \RuntimeException('A stream must be configured for ErrorLogger.');
     }
     $formatter = new ErrorAndExceptionHandler(array('dateTimeFormat' => 'Y-m-d H:i:s'));
     $writer = new Stream($config['stream']);
     $writer->setFormatter($formatter);
     $logger = new Logger();
     if (!isset($config['log_errors']) || !$config['log_errors']) {
         $writer->addFilter(new ErrorType(ErrorType::TYPE_EXCEPTION));
     } else {
         Logger::registerErrorHandler($logger);
     }
     if (!isset($config['log_exceptions']) || !$config['log_exceptions']) {
         $writer->addFilter(new ErrorType(ErrorType::TYPE_ERROR));
     } else {
         Logger::registerExceptionHandler($logger);
     }
     $logger->addWriter($writer);
     return $logger;
 }
Пример #5
0
 public function onBootstrap(MvcEvent $e)
 {
     $events = StaticEventManager::getInstance();
     $serviceManager = $e->getApplication()->getServiceManager();
     $appConfig = $serviceManager->get('Config');
     $logger = new Logger();
     if (!isset($appConfig['operation_logger'])) {
         throw new \RuntimeException("Logger not properly configured");
     }
     if (!isset($appConfig['operation_logger']['priority_filter'])) {
         throw new \RuntimeException("You must specify a 'priority_filter' config param");
     }
     $logFilter = new PriorityFilter($appConfig['operation_logger']['priority_filter']);
     if (!is_null($appConfig['operation_logger']['db_adapter'])) {
         if (empty($appConfig['operation_logger']['logger_table'])) {
             throw new \RuntimeException("You must specify a 'logger_table' config param");
         }
         $dbAdapter = $serviceManager->get($appConfig['operation_logger']['db_adapter']);
         if (!$dbAdapter instanceof \Zend\Db\Adapter\Adapter) {
             throw new \RuntimeException("Failed to load database adapter for logger");
         }
         $tableMapping = array('timestamp' => 'event_date', 'priorityName' => 'priority', 'message' => 'event', 'extra' => array('id_operation_log' => 'id_operation_log', 'note' => 'note', 'table' => 'table_name', 'id_user' => 'id_user', 'username' => 'username', 'id_row' => 'id_row', 'field' => 'field', 'value_old' => 'value_old', 'value_new' => 'value_new', 'source' => 'source', 'uri' => 'uri', 'ip' => 'ip', 'session_id' => 'session_id'));
         $logWriter = new DbWriter($dbAdapter, $appConfig['operation_logger']['logger_table'], $tableMapping);
         $logWriter->addFilter($logFilter);
         $logger->addWriter($logWriter);
     }
     // nel caso si volgia fare un file LOG
     if (isset($appConfig['operation_logger']['log_file']) && !is_null($appConfig['operation_logger']['log_file'])) {
         $streamWriter = new StreamWriter($appConfig['operation_logger']['log_file']);
         $streamWriter->addFilter($logFilter);
         $logger->addWriter($streamWriter);
     }
     $request = $e->getApplication()->getRequest();
     $remoteAddress = new RemoteAddress();
     Logger::registerErrorHandler($logger, true);
     Logger::registerExceptionHandler($logger);
     // Attacco evento per trigger LOG! (evento: operation-log)
     $events->attach("*", 'operation-log', function (\Zend\EventManager\Event $e) use($logger, $request, $remoteAddress, $serviceManager) {
         $targetClass = get_class($e->getTarget());
         $message = $e->getParam('message');
         $priority = $e->getParam('priority', Logger::INFO);
         $zfcAuthEvents = $serviceManager->get('zfcuser_auth_service');
         $idUser = $zfcAuthEvents->hasIdentity() ? $zfcAuthEvents->getIdentity()->getId() : (array_key_exists('id_user', $message) ? $message['id_user'] : '******');
         $displayName = $zfcAuthEvents->hasIdentity() ? $zfcAuthEvents->getIdentity()->getDisplayName() : (array_key_exists('username', $message) ? $message['username'] : '******');
         $extras = array('id_operation_log' => null, 'note' => array_key_exists('note', $message) ? $message['note'] : null, 'table_name' => array_key_exists('table', $message) ? $message['table'] : null, 'operation' => array_key_exists('operation', $message) ? $message['operation'] : null, 'id_user' => $idUser, 'username' => $displayName, 'id_row' => array_key_exists('id_row', $message) ? $message['id_row'] : null, 'field' => array_key_exists('field', $message) ? $message['field'] : null, 'value_old' => array_key_exists('value_old', $message) ? $message['value_old'] : null, 'value_new' => array_key_exists('value_new', $message) ? $message['value_new'] : null, 'source' => $targetClass, 'uri' => $request->getUriString(), 'ip' => $remoteAddress->getIpAddress(), 'session_id' => session_id());
         $logger->log($priority, $message['message'], $extras);
     });
 }
 public function createService(ServiceLocatorInterface $serviceLocator)
 {
     // TODO: Auto-generated method stub
     $params = $serviceLocator->get('logger_config');
     $path_filename = $params['path_filename'];
     $file_name = $params['log_filename'];
     $priority = $params['priority'];
     $writer = new Writer\Stream($path_filename . DIRECTORY_SEPARATOR . $params['log_filename'] . ".txt", "a");
     $formatter = new Formatter\Simple('%timestamp% | %message%');
     $filter = new Filter\Priority((int) $priority);
     $writer->setFormatter($formatter);
     $writer->addFilter($filter);
     $logger = new Logger();
     $logger->addWriter($writer);
     return $logger;
 }
Пример #7
0
 public function testFilterOnSpecificWriter()
 {
     $log2 = fopen('php://memory', 'w');
     $writer2 = new Writer\Stream($log2);
     $writer2->addFilter(Logger::ERR);
     $this->logger->addWriter($writer2);
     $this->logger->warn($warn = 'warn-message');
     $this->logger->err($err = 'err-message');
     rewind($this->log);
     $logdata = stream_get_contents($this->log);
     $this->assertContains($warn, $logdata);
     $this->assertContains($err, $logdata);
     rewind($log2);
     $logdata = stream_get_contents($log2);
     $this->assertContains($err, $logdata);
     $this->assertNotContains($warn, $logdata);
 }
Пример #8
0
 public function onBootstrap(MvcEvent $e)
 {
     $events = StaticEventManager::getInstance();
     $serviceManager = $e->getApplication()->getServiceManager();
     $appConfig = $serviceManager->get('Config');
     $logger = new Logger();
     if (!isset($appConfig['logger'])) {
         throw new \RuntimeException("Logger not properly configured");
     }
     if (!isset($appConfig['logger']['priority_filter'])) {
         throw new \RuntimeException("You must specify a 'priority_filter' config param");
     }
     $logFilter = new PriorityFilter($appConfig['logger']['priority_filter']);
     if (!is_null($appConfig['logger']['db_adapter'])) {
         if (empty($appConfig['logger']['logger_table'])) {
             throw new \RuntimeException("You must specify a 'logger_table' config param");
         }
         $dbAdapter = $serviceManager->get($appConfig['logger']['db_adapter']);
         if (!$dbAdapter instanceof \Zend\Db\Adapter\Adapter) {
             throw new \RuntimeException("Failed to load database adapter for logger");
         }
         $tableMapping = array('timestamp' => 'event_date', 'priorityName' => 'priority', 'message' => 'event', 'extra' => array('source' => 'source', 'uri' => 'uri', 'ip' => 'ip', 'session_id' => 'session_id'));
         $logWriter = new DbWriter($dbAdapter, $appConfig['logger']['logger_table'], $tableMapping);
         $logWriter->addFilter($logFilter);
         $logger->addWriter($logWriter);
     }
     if (isset($appConfig['logger']['log_file']) && !is_null($appConfig['logger']['log_file'])) {
         $streamWriter = new StreamWriter($appConfig['logger']['log_file']);
         $streamWriter->addFilter($logFilter);
         $logger->addWriter($streamWriter);
     }
     $request = $e->getApplication()->getRequest();
     $remoteAddress = new RemoteAddress();
     Logger::registerErrorHandler($logger, true);
     Logger::registerExceptionHandler($logger);
     $events->attach("*", 'log', function (\Zend\EventManager\Event $e) use($logger, $request, $remoteAddress) {
         $targetClass = get_class($e->getTarget());
         $message = $e->getParam('message', "[No Message Provided]");
         $priority = $e->getParam('priority', Logger::INFO);
         $extras = array('source' => $targetClass, 'uri' => $request->getUriString(), 'ip' => $remoteAddress->getIpAddress(), 'session_id' => session_id());
         $logger->log($priority, $message, $extras);
     });
 }
Пример #9
0
<?php

namespace Socialog;

use Zend\Cache\StorageFactory;
use Zend\Log;
return array('aliases' => array('socialog_orm' => 'doctrine.entitymanager.orm_default', 'socialog_dbal' => 'doctrine.connection.orm_default'), 'invokables' => array('socialog_user_mapper' => 'Socialog\\Mapper\\UserMapper', 'socialog_post_mapper' => 'Socialog\\Mapper\\PostMapper', 'socialog_page_mapper' => 'Socialog\\Mapper\\PageMapper', 'socialog_comment_mapper' => 'Socialog\\Mapper\\CommentMapper'), 'factories' => array('socialog-navigation' => 'Socialog\\Service\\NavigationFactory', 'socialog_cache' => function ($sm) {
    $config = $sm->get('Config');
    $storage = StorageFactory::factory($config['socialog']['cache']);
    return $storage;
}, 'socialog_logger' => function ($sm) {
    $logger = new Log\Logger();
    $stream = new Log\Writer\Stream('data/log/' . date('Y-m-d') . '.txt');
    $format = "%timestamp% %priorityName%: %message% %info%";
    $stream->setFormatter(new Log\Formatter\Simple($format, 'd-m-Y H:i:s'));
    $logger->addWriter($stream);
    $criticalStream = new Log\Writer\Stream('data/log/' . date('Y-m-d') . '-critical.txt');
    $format = "%timestamp%: %message% %info%";
    $criticalStream->setFormatter(new Log\Formatter\Simple($format, 'd-m-Y H:i:s'));
    $criticalStream->addFilter(new Log\Filter\Priority(Log\Logger::ERR, '>='));
    $logger->addWriter($criticalStream);
    return $logger;
}), 'initializers' => array('socialog_em' => function ($instance, $sm) {
    if ($instance instanceof Mapper\AbstractDoctrineMapper) {
        $instance->setEntityManager($sm->get('socialog_orm'));
    }
}, 'socialog_cache' => function ($instance, $sm) {
    if ($instance instanceof Cache\CacheAwareInterface) {
        $instance->setCacheStorage($sm->get('socialog_cache'));
    }
}));