2015-01-26 12 views
5

Sto utilizzando la configurazione di Monolog in basso in Symfony 2 per registrare gli errori minori nei file nella directory /app/logs/ e inviare email per tutti gli errori critici.Configura symfony monolog per mantenere i log di apache

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 

Il mio problema è che sembra questa configurazione impedisce la registrazione nativa di Apache trova nel virtuale di configurazione 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> 

I file ${APACHE_LOG_DIR}/vm.healthcare-cpd.error.log e {APACHE_LOG_DIR}/vm.healthcare-cpd.php.error.log sono vuoti, che ritengo essere causati da Monolog .

Quindi la mia domanda è: come configurare Monolog in Symfony 2 in modo che la registrazione di Apache e PHP funzioni ancora in parallelo con la registrazione di Monolog?

risposta

2

Il log degli errori di Apache non ha nulla a che fare con il registro dell'applicazione (Monolog).

Il problema è che se si gestiscono errori rilevando errori php o eccezioni nel proprio codice php o se Symfony li intercetta e li trasforma in una risposta adeguata (cosa che di fatto fa) Apache non saprà mai che qualcosa è fallito e pertanto non registra nulla nel proprio log degli errori.

Problemi correlati