2011-11-16 64 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