我的网站的日志系统

时间:2015-03-04 15:57:00

标签: php symfony logging printing

我创建了一个小类来保存我网站的日志。我的日志类:

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
    ));
}

问题在于:在我看来,它显示了这个$ test数组,并且在我的日志中只写了数组的第一个值,所以值为1。 我做错了什么?请帮帮我! Thx提前!

2 个答案:

答案 0 :(得分:1)

doc

一致
  

如果要捕获print_r()的输出,请使用return   参数。当此参数设置为TRUE时,将返回print_r()   信息而非打印信息。

使用此:

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

而不是:

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

希望这个帮助

我建议您使用Monolog执行此任务

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

答案 1 :(得分:0)

print_r有第二个参数:return。这意味着print_r()会返回它的输出,或只是显示它。默认情况下它是假的

所以你需要尝试

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