Как настроить вывод логов на ходу в laravel?

Как в Laravel создать отдельные лог файлы для разных пользователей, чтобы каждый лог файл имел название [Пользователь]-[дата].log? Возможно ли использовать метод ->user($user) для указания пользователя при записи в лог файл? Я не нашел информации об этом в документации Laravel.
  • 9 октября 2023 г. 17:37
Ответы на вопрос 1
В Laravel можно настроить вывод логов на ходу с помощью метода `Log::info()` или аналогичных методов `Log`. 

Для записи логов в отдельные файлы для разных пользователей с нужным форматом имени файла можно воспользоваться следующими шагами:

1. Создайте канал логирования в файле `config/logging.php` или в `.env` файле, добавив новую настройку:
```php
'channels' => [
    // ...
    'custom_user_logs' => [
        'driver' => 'daily',
        'path' => storage_path('logs/user-'.request()->user()->id.'-'.now()->format('Y-m-d').'.log'),
        'level' => 'info',
    ],
],
```

2. В нужной части кода при записи логов используйте метод `channel('custom_user_logs')` для указания нового канала:
```php
use Illuminate\Support\Facades\Log;

//...

Log::channel('custom_user_logs')->info('Сообщение для записи в лог');
```

Теперь каждый пользователь будет иметь свой отдельный лог файл с названием вида `[Пользователь]-[дата].log`.
Похожие вопросы