我在開發環境日誌在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