HEX
Server: Apache
System: Linux s198.coreserver.jp 5.15.0-151-generic #161-Ubuntu SMP Tue Jul 22 14:25:40 UTC 2025 x86_64
User: nagasaki (10062)
PHP: 7.1.33
Disabled: NONE
Upload Files
File: /virtual/nagasaki/public_html/ec/src/Eccube/ServiceProvider/LogServiceProvider.php
<?php

namespace Eccube\ServiceProvider;

use Eccube\EventListener\LogListener;
use Eccube\Log\Logger;
use Eccube\Log\Monolog\Helper\LogHelper;
use Silex\Application;
use Silex\ServiceProviderInterface;

/**
 * Class LogServiceProvider
 *
 * @package Eccube\ServiceProvider
 */
class LogServiceProvider implements ServiceProviderInterface
{
    public function register(Application $app)
    {
        $app->register(new \Silex\Provider\MonologServiceProvider());

        // Log
        $app['eccube.logger'] = $app->share(function ($app) {
            return new Logger($app);
        });

        // ヘルパー作成
        $app['eccube.monolog.helper'] = $app->share(function ($app) {
            return new LogHelper($app);
        });

        // ログクラス作成ファクトリー
        $app['eccube.monolog.factory'] = $app->protect(function (array $channelValues) use ($app) {

            $log = new $app['monolog.logger.class']($channelValues['name']);

            // EccubeMonologHelper内でHandlerを設定している
            $log->pushHandler($app['eccube.monolog.helper']->getHandler($channelValues));

            return $log;
        });

        // チャネルに応じてログを作成し、フロント、管理、プラグイン用のログ出力クラスを作成
        $channels = $app['config']['log']['channel'];
        // monologの設定は除外
        unset($channels['monolog']);
        foreach ($channels as $channel => $channelValues) {
            $app['monolog.logger.'.$channel] = $app->share(function ($app) use ($channelValues) {
                return $app['eccube.monolog.factory']($channelValues);
            });
        }

        // MonologServiceProviderで定義されているmonolog.handlerの置換
        $channelValues = $app['config']['log']['channel']['monolog'];
        $app['monolog.name'] = $channelValues['name'];
        $app['monolog.handler'] = $app->share(function ($app) use ($channelValues) {
            return $app['eccube.monolog.helper']->getHandler($channelValues);
        });

        $app['eccube.monolog.listener'] = $app->share(function () use ($app) {
            return new LogListener($app['eccube.logger']);
        });

        $app['listener.requestdump'] = $app->share(function ($app) {
            return new \Eccube\EventListener\RequestDumpListener($app);
        });
    }

    public function boot(Application $app)
    {
        $app['dispatcher']->addSubscriber($app['listener.requestdump']);
        $app['dispatcher']->addSubscriber($app['eccube.monolog.listener']);
    }
}