将日志文件添加到 slim 框架
Add log files to slim framework
我对 Slim 完全陌生。在过去的 3-4 年里,我一直使用 php,但我总是从头开始做所有事情。我想学习这个框架来做一些我必须做的休息服务。
我已经按照 slim 网页上的教程进行操作,使简单的休息服务正常工作,但我想添加一个日志系统,以便在出现问题或无论如何时查看发生了什么。
这是我所知道的:
<?php
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;
require '../Slim/Slim.php';
\Slim\Slim::requisterAutoloader();
$application = new \Slim\App();
$logger = $application->log;
$logger->setEnabled(true);
$logger->setLevel(\Slim\Log::DEBUG);
$application->get(
'/hello/user',
function ()
{
GLOBAL $logger;
$logger->info("starting the handling function");
echo "<data>response</data>";
$logger->info("ending handling function");
});
$application->run();
?>
我也尝试过使用 monolog,但没有成功。
<?php
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
require '../vendor/autoload.php';
$logger = new \Flynsarmy\SlimMonolog\Log\MonologWriter(array(
'handlers' => array(
new \Monolog\Handler\StreamHandler('./logs/'.date('Y-m-d').'.log'),
),
));
$app = new Slim\App(array(
'log.writer' => $logger,
));
$app->get('/hello/{name}', function (Request $request, Response $response){
$name = $request->getAttribute('name');
$response->getBody()->write("Hello, $name");
//$app->log->writer("hola");
$this->logger->info("Slim-Skeleton '/' route");
return $response;
});
$app->run();
我真正想要的是在同一文件中包含警告、调试、信息...的每日日志。每天换档。
slim-skeleton 应用程序展示了如何集成 monolog。
向 DI 容器注册记录器:
$container['logger'] = function ($c) {
$settings = $c->get('settings')['logger'];
$logger = new \Monolog\Logger('test-app');
$logger->pushHandler(new Monolog\Handler\StreamHandler('php://stdout', \Monolog\Logger::DEBUG));
return $logger;
};
在你的闭包中使用它:
$app->get('/hello/{name}', function (Request $request, Response $response){
$name = $request->getAttribute('name');
$response->getBody()->write("Hello, $name");
$this->get('logger')->info("Slim-Skeleton '/' route");
return $response;
});
日志将输出到标准输出,因此您会在 apache 错误日志中看到,或者如果您使用的是内置 PHP 服务器,则在终端中看到。
我对 Slim 完全陌生。在过去的 3-4 年里,我一直使用 php,但我总是从头开始做所有事情。我想学习这个框架来做一些我必须做的休息服务。
我已经按照 slim 网页上的教程进行操作,使简单的休息服务正常工作,但我想添加一个日志系统,以便在出现问题或无论如何时查看发生了什么。
这是我所知道的:
<?php
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;
require '../Slim/Slim.php';
\Slim\Slim::requisterAutoloader();
$application = new \Slim\App();
$logger = $application->log;
$logger->setEnabled(true);
$logger->setLevel(\Slim\Log::DEBUG);
$application->get(
'/hello/user',
function ()
{
GLOBAL $logger;
$logger->info("starting the handling function");
echo "<data>response</data>";
$logger->info("ending handling function");
});
$application->run();
?>
我也尝试过使用 monolog,但没有成功。
<?php
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
require '../vendor/autoload.php';
$logger = new \Flynsarmy\SlimMonolog\Log\MonologWriter(array(
'handlers' => array(
new \Monolog\Handler\StreamHandler('./logs/'.date('Y-m-d').'.log'),
),
));
$app = new Slim\App(array(
'log.writer' => $logger,
));
$app->get('/hello/{name}', function (Request $request, Response $response){
$name = $request->getAttribute('name');
$response->getBody()->write("Hello, $name");
//$app->log->writer("hola");
$this->logger->info("Slim-Skeleton '/' route");
return $response;
});
$app->run();
我真正想要的是在同一文件中包含警告、调试、信息...的每日日志。每天换档。
slim-skeleton 应用程序展示了如何集成 monolog。
向 DI 容器注册记录器:
$container['logger'] = function ($c) { $settings = $c->get('settings')['logger']; $logger = new \Monolog\Logger('test-app'); $logger->pushHandler(new Monolog\Handler\StreamHandler('php://stdout', \Monolog\Logger::DEBUG)); return $logger; };
在你的闭包中使用它:
$app->get('/hello/{name}', function (Request $request, Response $response){ $name = $request->getAttribute('name'); $response->getBody()->write("Hello, $name"); $this->get('logger')->info("Slim-Skeleton '/' route"); return $response; });
日志将输出到标准输出,因此您会在 apache 错误日志中看到,或者如果您使用的是内置 PHP 服务器,则在终端中看到。