2011-11-16 70 views
5

我在开发环境日志在Symfony 1.4.8中工作时遇到问题。同时,prod环境中的日志完全适用于相同的设置。我不确定我的开发环境出了什么问题。Symfony 1.4开发日志记录不工作

的想法是使用下面的代码登录动作和模板文件的消息:

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

然而,错误信息没有出现在开发环境frontend_dev.log。为了启用日志记录,我修改了settings.yml和factories.yml;我清除了symfony缓存和日志。出于某种奇怪的原因,在我清除日志(删除旧日志)后,symfony在dev环境中没有生成新的frontend_dev.log。另一方面,在产品环境中,执行清除日志命令后,symfony会生成一个空白frontend_prod.log。我不确定是什么造成了这种情况,如果这与记录不在开发环境中工作有关。

下面是我settings.yml中的设置和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 

请让我知道我做错了什么。谢谢。

更新:

我也打过电话中的actions.class.php

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

相同的结果之后,我得到了督促环境中的错误信息而不是在开发环境。

我也试图通过调用

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 

重置权限没有错误出现,它看起来像日志文件夹具有正确的权限。发生同样的事情,在开发环境中,symfony没有创建日志文件frontend_dev.log,但在清除日志后的prod模式下,创建了一个空白的frontend_prod.log。

这是我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(); 

更新2:

我刚刚发现我在开发和生产线的环境记录一些有趣的事情。

在我的symfony项目中有很多模块在应用程序中,我一直在测试消息记录在两个模块下的动作和模板。但是,今天我注意到一个有趣的事件,当我在其他模块中测试时,dev环境产生了错误信息,prod没有。如果我将错误日志插入4-5个模块,一些日志将显示在frontend_dev.log中,其他日志将显示在frontend_prod.log中。我尝试清除缓存并清除日志;仍然,相同的模块会在frontend_dev.log中产生错误,而其他模块会在frontend_prod中产生错误。登录

例如:我启用在/web/index.php PROD环境和插入下面的错误日志代码成4种不同的actions.class.php在4级不同的模块

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

如果我同时启用dev的并在prod环境中记录错误日志。 errortest1和errortest2将出现在frontend_dev.log中,errortest3和errortest4将出现在frontend_prod.log中 如果我只在prod环境中启用prod错误日志记录。 frontend_dev.log将为空,errortest3和errortest4将出现在frontend_prod.log中 如果我只在dev环境中启用dev错误日志记录。 errortest1和errortest2将出现在frontend_dev.log和frontend_prod.log将为空

所以我不知道发生了什么事情,我的symfony项目被损坏了吗?

+0

我似乎无法找到任何错误。尝试检查您的/日志文件夹的权限 – samura

+0

在旁注中,在您的操作中使用它来记录消息:$ this-> logMessage(“Error!”,“err”)。不要在动作中重新实例化sfContext单例类。 – Flukey

+0

谢谢你们的帮助。 我通过调用: “php symfony project:permission”来重置项目权限。我尝试了“$ this-> logMessage('ErrorMessage','err');同样的结果,我可以在prod环境中获得错误信息,但不能在开发环境中查看dev_debug和prod_debug规则,也许 – TSCOconan

回答

0

可能行结尾处的“\ n”与您的代码有关?

尝试在行之间留下空隙。

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

    logging_enabled:  true 
    web_debug:    true