PHP Classes
elePHPant
Icontem

File: docs/files/Stream/Strategy/AbstractDatabaseLoggerStrategy.php.txt

Recommend this page to a friend!
  Classes of Kiril Savchev  >  ITE Logger  >  docs/files/Stream/Strategy/AbstractDatabaseLoggerStrategy.php.txt  >  Download  
File: docs/files/Stream/Strategy/AbstractDatabaseLoggerStrategy.php.txt
Role: Documentation
Content type: text/plain
Description: Documentation
Class: ITE Logger
Log messages to different storage PSR-3 compliant
Author: By
Last change:
Date: 3 years ago
Size: 2,406 bytes
 

 

Contents

Class file image Download
<?php

/**
 * AbstractDatabaseLoggerStrategy file
 *
 * Copyright (c) 2016, Kiril Savchev
 * All rights reserved.
 *
 * @category Libs
 * @package Logger
 *
 * @author Kiril Savchev <k.savchev@gmail.com>
 *
 * @license https://opensource.org/licenses/BSD-3-Clause BSD 3 License
 * @link http://ifthenelse.info
 */
namespace Ite\Logger\Stream\Strategy;

use Ite\Logger\AbstractDatabaseLogger;
use Ite\Logger\Exception\InvalidArgumentException;
use Psr\Log\LoggerInterface;

/**
 * AbstractDatabaseLoggerStrategy
 *
 * Simple strategy for descendant of AbstractDatabaseLogger
 *
 * @uses psr\log
 *
 * @version 1.0
 *
 * @author Kiril Savchev <k.savchev@gmail.com>
 */
class AbstractDatabaseLoggerStrategy implements StreamLoggerStrategyInterface {

        /**
         * Prepare the logger before using
         *
         * @param LoggerInterface $logger
         * @param array $options
         * @throw \Ite\Logger\Exception\InvalidArgumentException If logger is not the desired class instance
         */
        public function prepareLogger(LoggerInterface $logger, array $options) {
                if (!($logger instanceof AbstractDatabaseLogger)) {
                        throw new InvalidArgumentException("Invalid logger type");
                }
                $query = $options['query'];
                $level = $options['path'];
                $config = [];
                if (array_key_exists('table', $query)) {
                        $config['table'] = $query['table'];
                }
                if (array_key_exists('messageField', $query)) {
                        $config['messageField'] = $query['messageField'];
                }
                if (array_key_exists('dateField', $query)) {
                        $config['dateField'] = $query['dateField'];
                }
                if (array_key_exists('contextField', $query)) {
                        $config['contextField'] = $query['contextField'];
                }
                if (array_key_exists('levelField', $query)) {
                        $config['levelField'] = $query['levelField'];
                }
                if (array_key_exists('prepared', $query)) {
                        $config['prepared'] = (bool) $query['prepared'];
                }
                if ($config) {
                        $logger->setTableConfigs([$level => $config]);
                }
        }

}