2011-11-16 34 views
5

Tôi đang gặp sự cố khi nhận nhật ký môi trường dev để làm việc trong Symfony 1.4.8. Trong khi đó, nhật ký trong môi trường sản xuất hoạt động hoàn hảo với các cài đặt tương tự. Tôi không chắc chắn những gì là sai với môi trường dev của tôi.Symfony 1.4 đăng nhập dev không hoạt động

Những ý tưởng là để đăng nhập các thông điệp trong hành động và các tập tin Template sử dụng đoạn mã sau:

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

Tuy nhiên, thông báo lỗi không xuất hiện trong frontend_dev.log trong môi trường dev. Để kích hoạt tính năng ghi nhật ký, tôi đã sửa đổi settings.yml và factories.yml; Tôi xóa bộ nhớ cache và nhật ký của symfony. Đối với một số lý do kỳ lạ, symfony không tạo ra một frontend_dev.log mới trong môi trường dev sau khi tôi xóa các bản ghi (xóa bản ghi cũ). Mặt khác, trong môi trường prod symfony tạo một frontend_prod.log trống sau khi thực hiện lệnh clear logs. Tôi không chắc chắn những gì đã gây ra điều này và nếu điều này có bất cứ điều gì để làm với đăng nhập không làm việc trong môi trường dev.

Dưới đây là các thiết lập trong settings.yml tôi và 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 

Xin vui lòng cho tôi biết tôi đang làm gì sai. Cảm ơn bạn.

Cập nhật:

Tôi cũng đã cố gắng kêu gọi sau đây trong actions.class.php

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

kết quả tương tự, tôi đã nhận được thông báo lỗi trong môi trường sản nhưng không phải trong môi trường dev.

Tôi cũng đã cố gắng để thiết lập lại sự cho phép bằng cách gọi

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 

không có lỗi xuất hiện và nó trông giống như thư mục log có đủ quyền hạn. Điều tương tự cũng xảy ra, trong môi trường dev symfony đã không tạo tệp log frontend_dev.log, nhưng trong chế độ prod sau khi xóa nhật ký, một frontend_prod.log trống đã được tạo.

Đây là frontend_dev.php tôi:

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

Cập nhật 2:

tôi chỉ tìm thấy một cái gì đó thú vị với các bản ghi của tôi trong dev và môi trường sản.

Trong dự án symfony của tôi có nhiều mô-đun trong ứng dụng, tôi đã thử nghiệm ghi nhật ký thư trong 2 mô-đun trong cả Tác vụ và Mẫu. Tuy nhiên, hôm nay tôi nhận thấy một sự kiện thú vị, khi tôi thử nghiệm trong các mô-đun khác, môi trường dev tạo ra thông báo lỗi và sản phẩm không. Và nếu tôi chèn nhật ký lỗi vào 4-5 mô-đun, một số nhật ký sẽ xuất hiện trong frontend_dev.log và các nhật ký khác sẽ xuất hiện trong frontend_prod.log. Tôi đã thử xóa bộ nhớ cache và xóa nhật ký; vẫn còn, cùng một mô-đun sẽ sản xuất lỗi trong frontend_dev.log và các mô-đun khác sẽ tạo ra lỗi trong frontend_prod.đăng nhập

Ví dụ: Tôi cho phép môi trường sản trong /web/index.php và chèn các mã log lỗi sau thành 4 actions.class.php khác nhau trong 4 module khác nhau

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

Nếu tôi cho phép cả hai dev và đăng nhập lỗi prod trong môi trường sản xuất. errortest1 và errortest2 sẽ xuất hiện trong frontend_dev.log và errortest3 và errortest4 sẽ xuất hiện trong frontend_prod.log Nếu tôi chỉ bật ghi nhật ký lỗi prod trong môi trường prod. frontend_dev.log sẽ trống và errortest3 và errortest4 sẽ xuất hiện trong frontend_prod.log Nếu tôi chỉ cho phép ghi nhật ký lỗi dev trong môi trường dev. errortest1 và errortest2 sẽ xuất hiện trong frontend_dev.log và frontend_prod.log sẽ trống rỗng

Vì vậy, tôi không chắc điều gì đang xảy ra, dự án symfony của tôi có bị hỏng không?

+0

Tôi dường như không có bất kỳ lỗi nào ở đó. Hãy thử kiểm tra sự cho phép của bạn/đăng nhập thư mục – samura

+0

Trên một lưu ý phụ, trong hành động của bạn, hãy sử dụng tính năng này để ghi nhật ký: $ this-> logMessage ("Lỗi!", "Err"). Không tái khởi tạo lớp singleton sfContext trong hành động. – Flukey

+0

Cảm ơn các bạn đã giúp đỡ. Tôi đặt lại quyền của dự án bằng cách gọi: "dự án symfony php: quyền". Tôi đã thử "$ this-> logMessage ('ErrorMessage', 'err'); Cùng một kết quả, tôi đã có thể nhận được thông báo lỗi trong môi trường prod nhưng không phải trong môi trường dev. Tôi sẽ xem xét các quy tắc dev_debug và prod_debug, có thể – TSCOconan

Trả lời

0

Có thể "\ n" ở cuối dòng được intefering với mã của bạn?

Hãy thử để lại khoảng cách giữa các dòng thay thế.

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

    logging_enabled:  true 
    web_debug:    true 
Các vấn đề liên quan