2011-11-16 24 views
5

Tengo problemas para conseguir que los registros de entorno dev funcionen en Symfony 1.4.8. Mientras tanto, los registros en el entorno de prod trabaja a la perfección con la misma configuración. No estoy seguro de lo que está mal con mi entorno de desarrollo.Symfony 1.4 dev logging no funciona

Las ideas es para registrar los mensajes en Acción y archivos de plantilla utilizando el siguiente código:

sfContext::getInstance()->getLogger()->err('Error Message Here!!!'); 

Sin embargo, mensaje de error no aparece en frontend_dev.log en el entorno dev. Para habilitar el registro, modifiqué settings.yml y factories.yml; Borré la memoria caché y los registros de Symfony. Por alguna extraña razón, Symfony no generó un nuevo frontend_dev.log en el entorno de desarrollo después de que borre los registros (eliminando el anterior). Por otro lado, en el entorno de producción, Symfony generó un frontend_prod.log en blanco después de ejecutar el comando clear logs. No estoy seguro de qué fue lo que causó esto y si esto tiene algo que ver con el registro no funciona en el entorno de desarrollo.

Éstos son los ajustes en mi settings.yml y factories.yml

settings.yml:

prod: 
    .settings: 
    no_script_name:   true 
    logging_enabled:  true 
    cache:     false 
    etag:     false 

dev: 
    .settings: 
    error_reporting:  <?php echo (E_ALL | E_STRICT)."\n" ?> 
    logging_enabled:  true 
    web_debug:    true 
    cache:     false 
    no_script_name:   false 
    etag:     false 

factories.yml:

prod: 
# logger: 
# class: sfNoLogger 
# param: 
#  level: err 
#  loggers: ~ 
    logger: 
    class: sfAggregateLogger 
    param: 
     level: err 
     loggers: 
     sf_web_debug: 
      class: sfWebDebugLogger 
      param: 
      level: debug 
      condition:  %SF_WEB_DEBUG% 
      xdebug_logging: true 
      web_debug_class: sfWebDebug 
     sf_file_debug: 
      class: sfFileLogger 
      param: 
      level: debug 
      file: %SF_LOG_DIR%/%SF_APP%_%SF_ENVIRONMENT%.log 

dev: 
    mailer: 
    param: 
     delivery_strategy: none 

    logger: 
    class: sfAggregateLogger 
    param: 
     level: debug 
     loggers: 
     sf_web_debug: 
      class: sfWebDebugLogger 
      param: 
      level: debug 
      condition:  %SF_WEB_DEBUG% 
      xdebug_logging: true 
      web_debug_class: sfWebDebug 
     sf_file_debug: 
      class: sfFileLogger 
      param: 
      level: debug 
      file: %SF_LOG_DIR%/%SF_APP%_%SF_ENVIRONMENT%.log 

favor hágamelo Sé lo que estoy haciendo mal. Gracias.

Actualización:

También había intentado llamar al siguiente en actions.class.php

$this->logMessage('ErrorMessageHere', 'err'); 

mismo resultado, me dieron el mensaje de error en entorno de producción, pero no en el entorno dev.

también traté de restablecer el permiso de llamar

php symfony project:permission 
    >> chmod 777 /var/www/ac2/web/uploads 
    >> chmod 777 /var/www/ac2/cache 
    >> chmod 777 /var/www/ac2/log 
    >> chmod 777 /var/www/ac2/symfony 
    >> chmod 777 /var/www/ac2/cache/frontend 
    ...... 
    drwxrwxrwx 2 www-data www-data 4096 2011-11-16 11:51 log 

apareció ningún error y parece que la carpeta de registro tiene los permisos correctos. Lo mismo sucedió, en el entorno de desarrollo symfony no creó el archivo de registro frontend_dev.log, pero en el modo prod después de borrar los registros, se creó un frontend_prod.log en blanco.

Esta es mi frontend_dev.php:

<?php 

// this check prevents access to debug front controllers that are deployed by accident to production servers. 
// feel free to remove this, extend it or make something more sophisticated. 
if (!in_array(@$_SERVER['REMOTE_ADDR'], array('127.0.0.1', '::1', '192.168.1.55'))) 
{ 
    die('You are not allowed to access this file. Check '.basename(__FILE__).' for more information.'); 
} 

require_once(dirname(__FILE__).'/../config/ProjectConfiguration.class.php'); 

$configuration = ProjectConfiguration::getApplicationConfiguration('frontend', 'dev', true); 
sfContext::createInstance($configuration)->dispatch(); 

Actualización 2:

simplemente he encontrado algo interesante con mis registros en dev y entorno prod.

En mi proyecto de Symfony hay muchos módulos en las aplicaciones, he estado probando el registro de mensajes en 2 módulos tanto en Acciones como en Plantillas. Sin embargo, hoy noté un evento interesante, cuando probé en otros módulos, el entorno de desarrollo produjo un mensaje de error y prod no. Y si inserto registros de errores en 4-5 módulos, algunos de los registros aparecerán en frontend_dev.log y otros aparecerán en frontend_prod.log. Intenté borrar el caché y borrar los registros; aún así, los mismos módulos producirían errores en frontend_dev.log y otros módulos producirían errores en frontend_prod.ingrese

Por ejemplo: He activado en el entorno prod /web/index.php y añade el siguiente código de registro de errores en 4 actions.class.php diferente en 4 módulos diferentes

$this->logMessage('errortest1', 'err'); 
$this->logMessage('errortest2', 'err'); 
$this->logMessage('errortest3', 'err'); 
$this->logMessage('errortest4', 'err'); 

Si habilito tanto dev y prod el registro de errores en el entorno de prod. errortest1 y errortest2 aparecerán en frontend_dev.log y errortest3 y errortest4 aparecerán en frontend_prod.log Si solo habilito el registro de error prod en el entorno prod. frontend_dev.log estará vacío y errortest3 y errortest4 aparecerán en frontend_prod.log Si solo habilito el registro de error dev en el entorno de desarrollo. errortest1 y errortest2 aparecerán en frontend_dev.log y frontend_prod.log estarán vacíos

Así que no estoy seguro de lo que está pasando, ¿se corrompió mi proyecto de Symfony?

+0

No puedo encontrar ningún error allí. Intente comprobar el permiso de su carpeta/log – samura

+0

En una nota lateral, en sus acciones, use esto para registrar mensajes: $ this-> logMessage ("Error!", "Err"). No vuelva a crear instancias de la clase sfContext singleton en la acción. – Flukey

+0

Gracias muchachos por su ayuda. Restablecí los permisos del proyecto llamando al: "php symfony project: permission". Intenté "$ this-> logMessage ('ErrorMessage', 'err'); el mismo resultado, pude obtener el mensaje de error en el entorno de producción pero no en el entorno de desarrollo. Examinaré las reglas dev_debug y prod_debug, tal vez Me falta algo allí. – TSCOconan

Respuesta

0

¿Podría la "\ n" al final de la línea interferir con su código?

Trate de dejar un espacio entre las líneas en su lugar.

dev: 
    .settings: 
    error_reporting:  <?php echo (E_ALL | E_STRICT); ?> 

    logging_enabled:  true 
    web_debug:    true 
Cuestiones relacionadas