我在开发环境日志在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项目被损坏了吗?
我似乎无法找到任何错误。尝试检查您的/日志文件夹的权限 – samura
在旁注中,在您的操作中使用它来记录消息:$ this-> logMessage(“Error!”,“err”)。不要在动作中重新实例化sfContext单例类。 – Flukey
谢谢你们的帮助。 我通过调用: “php symfony project:permission”来重置项目权限。我尝试了“$ this-> logMessage('ErrorMessage','err');同样的结果,我可以在prod环境中获得错误信息,但不能在开发环境中查看dev_debug和prod_debug规则,也许 – TSCOconan