2011-11-16 3 views
5

Symfony 1.4.8에서 작동하도록 dev 환경 로그를 얻는 데 문제가 있습니다. 한편 환경 친화적 인 환경의 로그는 동일한 설정으로 완벽하게 작동합니다. 내 dev 환경에 무슨 문제가 있는지 잘 모르겠습니다.Symfony 1.4 dev 로깅이 작동하지 않음

아이디어는 다음과 같은 코드를 사용하여 작업 및 템플릿 파일에 메시지를 기록하는 것입니다

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

그러나, 오류 메시지가 dev에 환경에서 frontend_dev.log에 나타나지 않았다. 로깅을 활성화하기 위해 settings.yml 및 factories.yml을 수정했습니다. 심포니 캐시와 로그를 삭제했습니다. 이상한 이유로 symfony는 로그를 삭제 한 후 (dev_name을 삭제 한 후) dev 환경에 새로운 frontend_dev.log를 생성하지 않았습니다. 반면, prod 환경에서는 symfony가 clear logs 명령을 수행 한 후 빈 frontend_prod.log를 생성했습니다. 나는 이것이 무엇을 일으켰는지, 그리고 이것이 dev 환경에서 작동하지 않는 로깅과 관련이 있는지 확신하지 못한다. 여기

내 settings.yml의 설정하고

가 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 

저를주세요 내가 뭘 잘못하고 있는지 알아. 고맙습니다. 나는 또한 호출 시도했다

actions.class.php

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

같은 결과에 다음, 내가 아니라 dev에 환경의 자극 환경에서 오류 메시지를 가지고 : 업데이트

.

또한 오류가 나타나지 않았다 및 로그 폴더가 올바른 권한을 가진 것 같습니다

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 

를 호출하여 권한을 재설정했습니다. 같은 일이 벌어졌습니다. dev 환경에서는 symfony가 로그 파일 frontend_dev.log를 만들지 않았지만 로그를 지운 후에는 prod 모드에서 빈 frontend_prod.log를 만들었습니다.

<?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 :

이 내 frontend_dev.php입니다 난 그냥 dev에와 자극 환경에서 내 로그에 뭔가 흥미로운 것을 발견

.

내 symfony 프로젝트에는 많은 모듈이 있습니다. 액션과 템플릿 모두에서 2 개의 모듈 로깅 메시지를 테스트했습니다. 그러나 오늘 흥미로운 사건을 발견했습니다. 다른 모듈에서 테스트했을 때, dev 환경에서 오류 메시지가 나타났습니다. 그리고 4-5 모듈에 오류 로그를 삽입하면 일부 로그가 frontend_dev.log에 나타나고 다른 로그는 frontend_prod.log에 나타납니다. 캐시 지우기 및 로그 지우기를 시도했습니다. 여전히 동일한 모듈이 frontend_dev.log에서 오류를 생성하고 다른 모듈은 frontend_prod에서 오류를 생성합니다.예를 들어

로그 : I는 /web/index.php에 자극 환경을 활성화하고 4 개 개의 모듈

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

I 두 디바이스를 사용하는 경우에 4 가지 actions.class.php에 다음 에러 로그 코드를 삽입 prod 환경에서 로깅 오류가 발생합니다. errortest1과 errortest2가 frontend_dev.log에 나타나고 errortest3과 errortest4가 frontend_prod.log에 나타납니다. prod 환경에서만 오류 기록을 사용하도록 설정 한 경우. frontend_dev.log는 비어 있으며 frontend_prod.log에 errortest3과 errortest4가 나타납니다. dev 환경에서만 dev 오류 로깅을 활성화하면 가능합니다. errortest1 및 errortest2이 frontend_dev.log에 표시되며 frontend_prod.log이

그래서 내가 무슨 일이 일어나고 있는지 확실하지 않다 비어있을 것입니다, 내 심포니 프로젝트가 손상있어나요?

+0

거기에는 오류가 없습니다. 당신/로그 폴더의 허락을 확인해보십시오. – samura

+0

참고로, 당신의 행동에서 이것을 사용하여 메시지를 기록하십시오 : $ this-> logMessage ("Error!", "err"). 액션에서 sfContext 싱글 톤 클래스를 다시 인스턴스 화하지 마십시오. – Flukey

+0

도와 주셔서 감사합니다. "php symfony project : permission"을 호출하여 프로젝트 권한을 재설정했습니다. 나는 "$ this-> logMessage ('ErrorMessage', 'err'); 같은 결과를 얻었으나 prod 환경에서는 오류가 있지만 dev 환경에서는 오류 메시지를 얻을 수 없었다. dev_debug 및 prod_debug 규칙을 살펴볼 것이다. – TSCOconan

답변

0

줄 끝의 "\ n"이 코드와 일치 할 수도 있습니까?

대신 줄 사이에 틈을 남기십시오.

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

    logging_enabled:  true 
    web_debug:    true 
관련 문제