Php 将500错误写入syslog并在slim框架中设置自定义错误消息

Php 将500错误写入syslog并在slim框架中设置自定义错误消息,php,slim,Php,Slim,我正在设置slim,希望将500错误写入系统日志,并为用户设置自定义消息。我已经定制了一个日志编写器,可以将错误写入系统日志。以下是实施方案: include_once '../vendor/autoload.php'; use Slim\Slim; $config = array( 'debug' => false, 'mode' => 'development', 'log.writer' => new \api\libraries\LogWri

我正在设置slim,希望将500错误写入系统日志,并为用户设置自定义消息。我已经定制了一个日志编写器,可以将错误写入系统日志。以下是实施方案:

include_once '../vendor/autoload.php';

use Slim\Slim;

$config = array(
    'debug' => false,
    'mode' => 'development',
    'log.writer' => new \api\libraries\LogWriter(),
    'log.enabled' => true,
    'log.level' => \Slim\Log::DEBUG
);

$app = new Slim($config);

/**
 * test
 */
$app->get('/test/:name', function ($name) {
    echo "Hello, $name2";
});

$app->run();
这将触发错误并将错误写入syslog,因为变量$name2未定义。系统日志示例:

agan@darkstar ~ $ sudo tail /var/log/syslog
Sep  9 11:37:46 localhost apache2: [API] ERROR - 2015-09-09T11:37:46+07:00 - exception 'ErrorException' with message 'Undefined variable: name2' in ...
然后,我想为用户设置自定义消息。因此,我在
$app->run()

然而,若我在上面添加代码,则不会执行日志编写器,在syslog中找不到日志,但自定义消息可以正常工作


正确的方法是什么?

您必须手动写入日志:

$app->log->error($e->getMessage());

你能解释一下为什么要手动调用记录器吗?顺便说一句,谢谢。记录器不仅用于错误,您还可以使用它将任何内容写入日志。此外,如果自动调用记录器,您将如何防止敏感数据出现在日志文件中?
$app->log->error($e->getMessage());