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ı vesettings.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?
Burada herhangi bir hatayı göremiyorum. Size/log klasörünün iznini kontrol etmeye çalışın – samura
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
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