У меня есть приложение Symfony, размещенное в Docker на AWS.Для ведения журнала я использую AWS CloudWatch.
Например: не удается установить соединение с базой данных.Если я использую монологическую конфигурацию по умолчанию, я получаю сообщение об ошибке в файле / project / var / log / prod.log .Когда я изменяю путь на php: // stderr , , я ожидаю того же сообщения в CloudWatch, но оно не появляется .
Я изменил индекс.php для целей тестирования:
<?php
echo ini_get('error_log');
error_log('error_log');
file_put_contents('php://stderr', 'file_put_contents', FILE_APPEND);
Вывод: /proc/self/fd/2
(цель журнала докера)
В CloudWatch я получаю сообщение error_log
, но не file_put_contents
.
Понятия не имею, в чем проблема.Возможно, приложение Symfony настроено неправильно.Но так как сообщение file_put_contents
отсутствует - оно работает без Symfony - я не уверен.
Это монологическая конфигурация:
monolog:
handlers:
main:
type: fingers_crossed
action_level: error
handler: nested
excluded_404s:
# regex: exclude all 404 errors from the logs
- ^/
nested:
type: stream
# path: "%kernel.logs_dir%/%kernel.environment%.log"
path: "php://stderr"
level: debug
console:
type: console
process_psr_3_messages: false
channels: ["!event", "!doctrine"]
deprecation:
type: stream
path: "%kernel.logs_dir%/%kernel.environment%.deprecations.log"
deprecation_filter:
type: filter
handler: deprecation
max_level: info
channels: ["php"]
Это конфигурация по умолчанию, кромелиния path: "php://stderr"
.