Php 将500错误写入syslog并在slim框架中设置自定义错误消息
我正在设置slim,希望将500错误写入系统日志,并为用户设置自定义消息。我已经定制了一个日志编写器,可以将错误写入系统日志。以下是实施方案: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
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());