2011-11-16 13 views
5

Mam problemy z pobieraniem dzienników środowiska programistycznego do pracy w Symfony 1.4.8. Tymczasem logi w środowisku prod działa doskonale z tymi samymi ustawieniami. Nie jestem pewien, co jest nie tak z moim środowiskiem deweloperskim.Nie działa rejestrowanie dev Symfony 1.4

Idee jest do wiadomości w działaniu i pliki szablonów zalogować za pomocą następującego kodu:

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

jednak komunikat o błędzie nie pojawia się w frontend_dev.log w środowisku dev. Aby włączyć rejestrowanie, zmodyfikowałem settings.yml i factorys.yml; Czyściłem pamięć podręczną symfony i logi. Z jakiegoś dziwnego powodu symfony nie wygenerował nowego frontend_dev.log w środowisku dev po wyczyszczeniu logów (usunięcie starego). Z drugiej strony, w środowisku prod symfony wygenerowało pusty frontend_prod.log po wykonaniu polecenia clear logs. Nie jestem pewien, co spowodowało to i jeśli ma to coś wspólnego z logowaniem nie działającym w środowisku deweloperów.

Oto ustawienia w moim settings.yml i 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 

Proszę pozwolić mi wiem, co robię źle. Dziękuję Ci.

Aktualizacja:

ja też próbowałem wywołanie następujących w actions.class.php

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

sam wynik, mam komunikat o błędzie w środowisku produkcyjnym, ale nie w środowisku dev.

Próbowałem też zresetować uprawnienia poprzez wywołanie

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 

pojawił się żaden błąd i wygląda folderze dziennika ma odpowiednie uprawnienia. To samo stało się, w środowisku dev symfony nie utworzył pliku logu frontend_dev.log, ale w trybie prod po usunięciu logów utworzono pusty frontend_prod.log.

To mój 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(); 

Aktualizacja 2:

Właśnie znalazłem coś ciekawego z moich dzienników w środowisku dev i prod.

W moim projekcie symfony znajduje się wiele modułów w aplikacjach, testowałem logowanie komunikatów w 2 modułach w ramach zarówno akcji, jak i szablonów. Jednak dzisiaj zauważyłem ciekawe wydarzenie, kiedy testowałem w innych modułach, środowisko produkowane przez dev przesłało komunikat o błędzie, a prod nie. A jeśli wstawię dzienniki błędów do 4-5 modułów, niektóre dzienniki pojawią się w pliku frontend_dev.log, a inne pojawią się w pliku frontend_prod.log. Próbowałem wyczyścić pamięć podręczną i wyczyścić logi; jednak te same moduły powodowałyby błędy w pliku frontend_dev.log, a inne moduły powodowałyby błędy w frontend_prod.log

Na przykład: Mam włączony środowisku produkcyjnym w /web/index.php i dodaje następujące kody dziennika błędów w 4 różnych actions.class.php w 4 różnych modułów

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

Gdybym umożliwić zarówno dev i rejestrowanie błędów prod w środowisku prod. errortest1 i errortest2 pojawią się w pliku frontend_dev.log, a errortest3 i errortest4 pojawią się w frontend_prod.log Jeśli tylko włączam rejestrowanie błędów prod w środowisku prod. frontend_dev.log będzie pusty, a errortest3 i errortest4 pojawią się w frontend_prod.log Jeśli tylko włączam rejestrowanie błędów dev w środowisku dev. errortest1 i errortest2 pojawią się w pliku frontend_dev.log, a frontend_prod.log będzie pusty

Więc nie jestem pewien, co się dzieje, czy mój projekt symfony został uszkodzony?

+0

Nie wydaje mi się, żeby tam popełniono błąd. Spróbuj sprawdzić uprawnienia do folderu/log. – samura

+0

Na marginesie, w swoich działaniach używaj tego do rejestrowania wiadomości: $ this-> logMessage ("Błąd!", "Err"). Nie odtwarzaj ponownie klasy singleton sfContext w akcji. – Flukey

+0

Dzięki chłopaki za pomoc. Zresetowałem uprawnienia projektu, dzwoniąc pod numer: "php symfony project: permission". Próbowałem "$ this-> logMessage (" ErrorMessage "," err "), Ten sam wynik, udało mi się uzyskać komunikat o błędzie w środowisku prod, ale nie w środowisku dev. Zajrzę do reguł dev_debug i prod_debug, być może Brakuje mi tam czegoś ... – TSCOconan

Odpowiedz

0

Czy "\ n" na końcu wiersza może zakłócać twój kod?

Spróbuj zamiast tego pozostawić przerwę między liniami.

dev: 
    .settings: 
    error_reporting:  <?php echo (E_ALL | E_STRICT); ?> 

    logging_enabled:  true 
    web_debug:    true 
Powiązane problemy