84 lines
3.0 KiB
PHP
84 lines
3.0 KiB
PHP
<?php
|
|
|
|
/*
|
|
* This file is part of the package thucke/th-rating.
|
|
*
|
|
* For the full copyright and license information, please read the
|
|
* LICENSE file that was distributed with this source code.
|
|
*/
|
|
|
|
namespace WapplerSystems\BookmarksLikesRatings\Service;
|
|
|
|
use TYPO3\CMS\Core\Log\Logger;
|
|
use TYPO3\CMS\Core\Log\LogManager;
|
|
use TYPO3\CMS\Core\Log\Writer\DatabaseWriter;
|
|
use TYPO3\CMS\Core\Log\Writer\FileWriter;
|
|
use TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface;
|
|
use TYPO3\CMS\Extbase\Object\ObjectManagerInterface;
|
|
|
|
/**
|
|
* Factory for model objects
|
|
*
|
|
* @version $Id:$
|
|
* @license http://opensource.org/licenses/gpl-license.php GNU protected License, version 2
|
|
*/
|
|
class LoggingService
|
|
{
|
|
/**
|
|
* @var \TYPO3\CMS\Extbase\Object\ObjectManagerInterface
|
|
*/
|
|
protected $objectManager;
|
|
/**
|
|
* @var \TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface
|
|
*/
|
|
protected $configurationManager;
|
|
|
|
/**
|
|
* Constructor
|
|
* Must overrule the abstract class method to avoid self referencing
|
|
* @param \TYPO3\CMS\Extbase\Object\ObjectManagerInterface $objectManager
|
|
* @param \TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface $configurationManager,
|
|
*/
|
|
public function __construct(
|
|
ObjectManagerInterface $objectManager,
|
|
ConfigurationManagerInterface $configurationManager
|
|
) {
|
|
$this->objectManager = $objectManager;
|
|
$this->configurationManager = $configurationManager;
|
|
}
|
|
|
|
/**
|
|
* Get a logger instance
|
|
* The configuration of the logger is modified by extension typoscript config
|
|
*
|
|
* @param string $name the class name which this logger is for
|
|
* @return \TYPO3\CMS\Core\Log\Logger
|
|
*/
|
|
public function getLogger(string $name): Logger
|
|
{
|
|
/** @var array $writerConfiguration */
|
|
$writerConfiguration = $GLOBALS['TYPO3_CONF_VARS']['LOG']['Thucke']['ThRating']['writerConfiguration'];
|
|
$settings = $this->configurationManager->getConfiguration(
|
|
ConfigurationManagerInterface::CONFIGURATION_TYPE_SETTINGS,
|
|
'thRating',
|
|
'pi1'
|
|
);
|
|
if (is_array($settings['logging'])) {
|
|
foreach ($settings['logging'] as $logLevel => $logConfig) {
|
|
$levelUppercase = strtoupper($logLevel);
|
|
if (!empty($logConfig['file'])) {
|
|
$writerConfiguration[constant('\TYPO3\CMS\Core\Log\LogLevel::' . $levelUppercase)][FileWriter::class] = ['logFile' => $logConfig['file']];
|
|
}
|
|
if (!empty($logConfig['database'])) {
|
|
$writerConfiguration[constant('\TYPO3\CMS\Core\Log\LogLevel::' . $levelUppercase)][DatabaseWriter::class] = ['table' => $logConfig['table']];
|
|
}
|
|
}
|
|
}
|
|
if (!empty($writerConfiguration)) {
|
|
$GLOBALS['TYPO3_CONF_VARS']['LOG']['Thucke']['ThRating']['writerConfiguration'] = $writerConfiguration;
|
|
}
|
|
|
|
return $this->objectManager->get(LogManager::class)->getLogger($name);
|
|
}
|
|
}
|