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); } } }
/** * @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; }
/** * @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; }
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; }
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); }
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); }); }
<?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')); } }));