2015-03-04 4 views
1

Я создаю небольшой класс для сохранения журналов моего сайта. Мой журнал Класс:Система журналов для моего сайта

class Logs { 

public static function writeFile($message) 
{ 
    $log_path = '/home/vagrant/Workspace/symfony/app/logs'; 
    // Set path: 
    $log_path .= '/' . date('Ymd'); 
    $log_path .= '.log'; 
    $s_message = date("Y-m-d H:i:s") . ' (' . microtime(true) . ') ' . $message; 
    $s_message .= "\n"; 
    file_put_contents($log_path, $s_message, FILE_APPEND); 
} 
public static function logInfo($s_message) 
{ 
    self::writeFile($s_message); 
} 

} 

И я вызвать статический метод в моем контроллере:

public function indexAction() 
{ 
    $em = $this->getDoctrine()->getManager(); 
    $categories = $em->getRepository('EnsJobeetBundle:Category')->getWithJobs(); 
    $test = array(
     '1'=>'1', 
     '2'=>'2', 
     '3'=>'3' 
    ); 
    Logs::logInfo(print_r($test)); 

    return $this->render('EnsJobeetBundle:Job:index.html.twig', array(
     'categories' => $categories 
    )); 
} 

Проблема заключается в том, что: на мой взгляд, это показать это $ тестовый массив и в моем журнале, пишут только первое значение массива, поэтому значение 1. Что я делаю неправильно? Помоги мне, пожалуйста! Thx заранее!

+0

Привет @Gigel, если мина или любой ответ решил свой вопрос, пожалуйста, рассмотреть [принять его] (HTTP: // meta.stackexchange.com/q/5234/179419), нажав галочку. Это указывает более широкому сообществу, что вы нашли решение и дали некоторую репутацию как самому, так и самому себе. Это не обязательно. – Matteo

ответ

1

В аккордеона с doc:

If you would like to capture the output of print_r(), use the return parameter. When this parameter is set to TRUE, print_r() will return the information rather than print it.

Используйте это:

Logs::logInfo(print_r($test, true)); 

вместо:

Logs::logInfo(print_r($test)); 

надеюсь, что это поможет

Я предлагаю вам использовать Monolog для выполнения этой задачи

http://symfony.com/doc/current/cookbook/logging/monolog.html

+0

Это проблема, когда я пытался сделать: Logs :: logInfo (print_r ($ categories, true)) не работает – TanGio

+0

очень сильно, вы можете попробовать с [var_export] (http://php.net/var_export) всегда с параметром 'true' в качестве второго аргумента – Matteo

+0

Я получаю сообщение об ошибке: Ошибка: разрешенный размер памяти 536870912 байт исчерпан (пытался выделить 531365986 байт) – TanGio

0

print_r имеет второй параметр: return. Wich означает, что print_r() вернет свой вывод или просто отобразит его. Это ложь по умолчанию

Таким образом, вы должны попробовать

Logs::logInfo(print_r($test,true)); 
Смежные вопросы