Как отдельно сделать логирование в Laravel для отдельного пакета?

В Laravel есть логи app всего приложения в config/logging.php

А как автоматически добавлять канал для отдельного пакета php?
Есть возможность регистрировать канал при установке пакета для Laravel?
  • Вопрос задан
  • 229 просмотров
Решения вопроса 1
@iljaGolubev
В пакете можно держать свои конфиги в таком же точно виде как в приложении ларавель.
Непонятно, для чего вам понадобился канал логера пакета в приложении (снаружи пакета) . Имхо, только пакет его должен использовать. Но если очень хочется, можно так:
// пакет config/logging.php
return [
      'channels' => [
        'my-packet-name-log-channel' => [
            'driver' => 'single',
            'path' => env('MY_P_N_LOG_PATH', storage_path('logs/my-packet-name.log')),
            'level' => env('LOG_LEVEL', 'debug'),
            'replace_placeholders' => true,
            'permission' => 0664
            // ...
        ],
    ],

];


// сервис провайдер пакета
public function register(): void
    {
        if (!($this->app instanceof CachesConfiguration && $this->app->configurationIsCached())) {
            $config = $this->app->make('config');
            $config->set('logging', array_merge_recursive(
                require __DIR__ . '/../config/logging.php',
                $config->get('logging', [])
            ));
        }

}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы