<?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]);
}
}
}
|