Я использую приведенную ниже конфигурацию Monolog в Symfony 2 для регистрации меньших ошибок в файлах в /app/logs/
каталог и отправлять электронные письма для всех критических ошибок.
monolog:
handlers:
main:
level: error
type: stream
path: "%kernel.logs_dir%/%kernel.environment%_remaining.log"channels: ["!doctrine", "!request", "!security"]
request:
type: fingers_crossed
handler: requests
requests:
type: group
members: [request_critical, request_error]
request_critical:
level: critical
type: stream
path: "%kernel.logs_dir%/%kernel.environment%_request_critical.log"channels: [request]
request_error:
level: error
type: stream
path: "%kernel.logs_dir%/%kernel.environment%_request.log"channels: [request]
doctrine:
level: error
type: stream
path: "%kernel.logs_dir%/%kernel.environment%_doctrine.log"channels: [doctrine]
security:
level: error
type: stream
path: "%kernel.logs_dir%/%kernel.environment%_security.log"channels: [security]
mail:
type: fingers_crossed
action_level: critical
handler: buffered
buffered:
type: buffer
handler: swift
swift:
type: swift_mailer
from_email: "%mailer_from_address%"to_email: "%development_address%"subject: A critical error occurred
Моя проблема в том, что кажется, что эта установка предотвращает собственный набор журналов Apache в конфигурации Virtual Host:
<VirtualHost *:80>
<Directory "/mnt/vm/vm.healthcare-cpd/web">
Header set Access-Control-Allow-Origin "*"Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
Require all granted
</Directory>
php_flag log_errors on
php_value error_reporting 2147483647
ErrorLog ${APACHE_LOG_DIR}/vm.healthcare-cpd.error.log
CustomLog ${APACHE_LOG_DIR}/vm.healthcare-cpd.access.log combined
php_value error_log ${APACHE_LOG_DIR}/vm.healthcare-cpd.php.error.log
</VirtualHost>
${APACHE_LOG_DIR}/vm.healthcare-cpd.error.log
а также {APACHE_LOG_DIR}/vm.healthcare-cpd.php.error.log
файлы пустые, что, как мне кажется, вызвано Монологом.
Итак, мой вопрос: как настроить Monolog в Symfony 2 так, чтобы протоколирование Apache и PHP продолжало работать параллельно с журналированием Monolog?
Журнал ошибок Apache не имеет ничего общего с журналом приложений (Monolog).
Проблема здесь в том, что если вы обрабатываете ошибки, перехватывая ошибки или исключения php в вашем php-коде, или Symfony перехватывает их и преобразовывает их в правильный ответ (что на самом деле делает), Apache никогда не узнает, что что-то не так, и поэтому не регистрирует ошибки. что-нибудь к его журналу ошибок.
Других решений пока нет …