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?
Nie wydaje mi się, żeby tam popełniono błąd. Spróbuj sprawdzić uprawnienia do folderu/log. – samura
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
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