2011-11-16 20 views
5

Symfony 1.4.8'de çalışmak için ortam günlüklerini almada sorun yaşıyorum. Bu arada, prod ortamında günlükler aynı ayarlarla mükemmel çalışır. Dev ortamımdaki sorunun ne olduğundan emin değilim.Symfony 1.4 dev günlüğe kaydetme çalışmıyor

fikirleri aşağıdaki kodu kullanarak Eylem ve Şablon dosyalarında mesajları oturum geçerli:

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

Ancak hata mesajı dev ortamında frontend_dev.log yer almadı. Günlüğe kaydetmeyi etkinleştirmek için settings.yml ve factories.yml; Symfony önbelleğini ve günlükleri temizledim. Bazı garip nedenlerden dolayı, symfony günlükleri temizledikten sonra (eski olanı silme) dev bir ortamda yeni bir frontend_dev.log oluşturmadı. Diğer taraftan, prod ortamında simetri, net logs komutunu gerçekleştirdikten sonra boş bir frontend_prod.log oluşturdu. Bunun neden kaynaklandığından emin değilim ve eğer bu, oturum açma ortamında çalışmama ile ilgili bir şey varsa. İşte

benim settings.yml ayarları ve

settings.yml factories.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 

Lütfen beni içeri neyi yanlış yaptığımı biliyorum. Teşekkür ederim. Ayrıca arama çalıştı

actions.class.php

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

aynı sonucu aşağıdaki, ben ancak dev ortamında prod ortamında hata mesajı var: Güncelleme

.

Ben de hiçbir hata ortaya çıktı ve günlük klasörü sağ izinlere sahip gibi görünüyor

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 

arayarak iznini sıfırlamak için çalıştı. Aynı şey oldu, dev ortamı symfony, frontend_dev.log günlük dosyası oluşturmadı, ancak günlükleri temizledikten sonra prod modunda, boş bir frontend_prod.log oluşturuldu.

<?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(); 

Güncelleme 2:

Bu benim frontend_dev.php olduğunu ben sadece dev ve prod ortamında Günlüklerimde ile ilginç bir şey buldu

.

Symfony projemde, uygulamalarda çok sayıda modül var, hem Eylemler hem de Şablonlar altında 2 modülde mesaj günlüğünü test ediyordum. Ancak günümüzde, ilginç bir olay olduğunu fark ettim, diğer modüllerde test ettiğimde, dev ortamı hata mesajı verdi ve prod yapmadı. Ve eğer hata günlüklerini 4-5 modülüne eklerseniz, bazı günlükler frontend_dev.log içinde görünecek ve diğerleri frontend_prod.log içinde görünecektir. Önbelleği temizlemeyi ve günlükleri temizlemeyi denedim; Yine de, aynı modüller frontend_dev.log dosyasında hatalar üretecek ve diğer modüller frontend_prod'da hatalar üretecektir.Örneğin

log: Ben /web/index.php içinde prod ortamı etkin ve 4 farklı modüllerin

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

ben hem dev etkinleştirirseniz 4 farklı actions.class.php aşağıdaki hata günlüğü kodları takılı ve prod ortamında prod hata kaydı. errortest1 ve errortest2, frontend_dev.log içinde görünecek ve errortest3 ve errortest4, frontend_prod.log 'da görünecektir. Yalnızca prod hatalarını prod ortamında etkinleştirirseniz. frontend_dev.log boş olacak ve errortest3 ve errortest4 frontend_prod.log içinde görünecektir. Yalnızca dev ortamında günlük hata kaydını etkinleştiririm. errortest1 ve errortest2, frontend_dev.log dosyasında görünecek ve frontend_prod.log boş olacak

Neler olup bittiğinden emin değilim, symfony projem bozuldu mu?

+0

Burada herhangi bir hatayı göremiyorum. Size/log klasörünün iznini kontrol etmeye çalışın – samura

+0

Bir yan notda, eylemlerinizde iletileri kaydetmek için bunu kullanın: $ this-> logMessage ("Hata!", "Err"). SfContext tekil sınıfını eylemde yeniden örneklendirmeyin. – Flukey

+0

Yardımlarınız için teşekkürler çocuklar. Proje izinlerini "php symfony project: izni" diye çağırarak sıfırlarım. "$ This-> logMessage ('ErrorMessage', 'err') denedim; Aynı sonuç, prod ortamında hata mesajını alabildim ama dev ortamında değil. Dev_debug ve prod_debug kurallarına bakabilirim belki – TSCOconan

cevap

0

Satırın sonunda bulunan "\ n" kodunuzla uyumlu olabilir mi?

Bunun yerine satırlar arasında bir boşluk bırakmayı deneyin.

İlgili konular