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