Как сохранить информационные журналы symfony monolog в производстве?

Я пробовал все, и я не могу сохранить журнал «информация» в prod.log или что-то еще, кроме dev.log. Ошибки корректно сохраняются в prod.log.

Что-то не так с этим кодом? Я использую новейшую версию symfony и monolog.

монолог.yaml:

when@prod:
    monolog:
        handlers:
            main:
                type: fingers_crossed
                action_level: warning
                handler: nested
                excluded_http_codes: [404, 405]
                buffer_size: 50 # How many messages should be saved? Prevent memory leaks
            nested:
                type: stream
                path: '%kernel.logs_dir%/%kernel.environment%.log'               
                level: debug
                formatter: monolog.formatter.json
            console:
                type: console
                process_psr_3_messages: false
                channels: ["!event", "!doctrine"]

и вот мой контроллер:

 #[Route('/test', name: 'app_test')]
    public function index(LoggerInterface $logger): Response
    {
        $logger->info('test');

        return $this->render('test/index.html.twig', [

        ]);

    }

я пытался добавить

deprecation:
    type: stream
    level: info
    channels: [php]
    path: '%kernel.logs_dir%/deprecated.log'

но это не помогает

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
79
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Этот основной обработчик типа finger_crossed, вероятно, фильтрует сообщения.

Скрещенные пальцы будут буферизовать журналы из обработчика, который он обертывает. И только когда его уровень срабатывания будет достигнут, он очистит свой буфер. См. handler: nested, что означает, что он обертывает вложенный обработчик. И уровень срабатывания основного обработчика установлен на action_level: warning.

Таким образом, ваш вложенный обработчик регистрирует все, что выше уровня отладки журнала. Но основной обработчик упаковывает его, и он будет очищать буфер только после того, как появится сообщение журнала с предупреждением и выше.

В вашем контроллере есть только логи информации об уровне. Это означает, что уровень срабатывания не был достигнут, и буфер не был очищен.

Либо понизьте action_level в основном обработчике, либо инициируйте ведение журнала, создав журнал как минимум уровня предупреждения.

Ответ принят как подходящий

Спасибо - @Waaghals за подсказку. Я сделал это :)

Поверх файла monolog.yaml есть крошечный вспомогательный комментарий:

monolog:
    channels:
        - deprecation # Deprecations are logged in the dedicated "deprecation" channel when it exists

После его реализации:

            deprecation:
                type: stream
                level: info
                channels: ["!event"]
                path: '%kernel.logs_dir%/info.log'

Он регистрирует все, что равно или выше уровня «информации» в производстве, в «info.log».

Другие вопросы по теме