Symfony 1.4开发日志记录无法正常工作

TSC*_*nan 5 environment logging symfony1

我无法让开发环境日志在Symfony 1.4.8中运行.同时,prod环境中的日志与相同的设置完美配合.我不确定我的开发环境有什么问题.

这些想法是使用以下代码在Action和Template文件中记录消息:

    sfContext::getInstance()->getLogger()->err('Error Message Here!!!');
Run Code Online (Sandbox Code Playgroud)

但是,在dev环境中的frontend_dev.log中没有出现错误消息.为了启用日志记录,我修改了settings.yml和factories.yml; 我清除了symfony缓存和日志.由于一些奇怪的原因,在清除日志(删除旧日志)后,symfony没有在开发环境中生成新的frontend_dev.log.另一方面,在prod环境中,symfony在执行clear logs命令后生成了一个空白的frontend_prod.log.我不确定是什么导致了这个,如果这与在dev环境中不能正常工作的日志有关.

以下是我的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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

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

更新:

我还试过在actions.class.php中调用以下内容

$this->logMessage('ErrorMessageHere', 'err');
Run Code Online (Sandbox Code Playgroud)

同样的结果,我在prod环境中得到了错误消息,但在dev环境中没有.

我还尝试通过调用重置权限

    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
Run Code Online (Sandbox Code Playgroud)

没有出现错误,看起来日志文件夹具有正确的权限.同样的事情发生了,在开发环境中,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();
Run Code Online (Sandbox Code Playgroud)

更新2:

我刚刚在dev和prod环境中发现了一些有趣的东西.

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

例如:我在/web/index.php中启用了prod环境,并将以下错误日志代码插入到4个不同模块中的4个不同的actions.class.php中

$this->logMessage('errortest1', 'err');
$this->logMessage('errortest2', 'err');
$this->logMessage('errortest3', 'err');
$this->logMessage('errortest4', 'err');
Run Code Online (Sandbox Code Playgroud)

如果我在prod环境中启用dev和prod错误日志记录.errortest1和errortest2将出现在frontend_dev.log和errortest3和errortest4将出现在frontend_prod.log如果我只能够在督促环境督促错误日志.frontend_dev.log将为空,errortest3和errortest4将出现在frontend_prod.log中.如果我只在dev环境中启用dev错误日志记录.errortest1和errortest2将出现在frontend_dev.log中,frontend_prod.log将为空

所以我不确定发生了什么,我的symfony项目是否已损坏?

Jon*_*ley 0

行末尾的“\n”可能会干扰您的代码吗?

尝试在线条之间留出间隙。

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

    logging_enabled:        true
    web_debug:              true
Run Code Online (Sandbox Code Playgroud)