2017-04-01 2 views
0

Ich bin komplett neu zu Slim. Ich habe PHP in den letzten 3-4 Jahren benutzt, aber ich habe immer alles von Grund auf gemacht. Ich möchte diesen Rahmen für einige Restdienste lernen, die ich machen muss.Hinzufügen von Protokolldateien zu schlanken Rahmen

Ich habe ein Tutorial auf der schlanken Webseite verfolgt, um einen einfachen Rest-Service zu erhalten, aber ich möchte ein Log-System hinzufügen, um zu sehen, was passiert, wenn etwas schief läuft oder nicht. Diese

ist, was ich richtige Know haben:

<?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(); 
?> 

ich auch mit Monolog versucht, aber ich habe nicht daran zu arbeiten.

<?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(); 

Was würde ich wirklich will, ist ein tägliches Protokoll mit Warnungen haben, debug, info ... in der gleichen Datei. Ändern der Datei jeden Tag.

+0

Welche Version von Slim versuchen Sie zu verwenden. Sie scheinen zu versuchen zu kombinieren, aber schlank 3 und 2 Code. – meun5

+0

Log-Datei ist beschreibbar von Web-Server? –

+0

Ich benutze 3.8. Ich denke, es ist das Neueste. – user1298272

Antwort

2

Die Anwendung slim-skeleton zeigt, wie man Monolog integriert.

  1. mit den DI-Containern die Logger registrieren:

    $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; 
    }; 
    
  2. es in Ihrer Schließung Verwendung:

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

Die Protokolle werden auf stdout aus, so dass Sie‘ Ich sehe das in Ihrem Apache-Fehlerprotokoll oder, wenn Sie den integrierten PHP-Server verwenden, im Terminal.

+1

Vielen Dank! Endlich habe ich das funktioniert. – user1298272

Verwandte Themen