Я довольно новичок в Symfony2 и ищу способ записывать запросы SQL (включая тайминги) в тот же файл журнала, что и остальная часть моего приложения.
Из того, что я могу определить из документации, все это должно работать «из коробки», но после нескольких часов попыток я не могу понять, что я делаю неправильно.
config_dev.yml
monolog:
handlers:
doctrine:
action_level: debug
type: stream
path: %kernel.logs_dir%/%kernel.environment%_doctrine.log
channels: doctrine
config.yml
# Doctrine Configuration
doctrine:
dbal:
driver: "%database_driver%"host: "%database_host%"port: "%database_port%"dbname: "%database_name%"user: "%database_user%"password: "%database_password%"charset: UTF8
logging: true
profiling: true
orm:
auto_generate_proxy_classes: "%kernel.debug%"auto_mapping: true
Я не получаю файл журнала, сгенерированный вообще. Мой другой обработчик журналов работает нормально (не указан здесь).
Мне интересно, где я ошибся, но также и то, является ли это действительно правильным подходом или я должен реализовать новый класс, который реализует SQL Logger, как упомянуто здесь: http://vvv.tobiassjosten.net/symfony/logging-doctrine-queries-in-symfony2/
Но я не знаю, как подключить это через конфигурацию / сервисы, чтобы сделать его применимым для всего проекта (например, я не хочу вызывать его в каждом контроллере).
Большое спасибо за любую помощь!
Если вы действительно уверены, что вам нужно регистрировать запросы doctrine 2 в рабочей среде, вы можете настроить это в конфигах doctrine.
connections:
# A collection of different named connections (e.g. default, conn2, etc)
default:
# when true, queries are logged to a "doctrine" monolog channel
logging: true
http://symfony.com/doc/current/reference/configuration/doctrine.html
И настроить монолог для регистрации доктрины, как описано в документации:
http://symfony.com/doc/current/cookbook/logging/channels_handlers.html
Подобная проблема может быть найдена в Symfony 2.4 не может получить канал доктрины в среде prod
Других решений пока нет …