2017-04-01 42 views
0

我completelly新修身。我在過去的3 - 4年中使用過PHP,但我總是從頭開始做所有事情。我想學習這個框架,爲我需要做的一些休息服務。日誌文件添加到纖細的框架

我按照在纖薄網頁教程得到一個簡單的REST服務工作,但我想添加一個日誌系統看的時候出了差錯或wathever發生了什麼。

這是我有權知道:

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

我也試圖與獨白,但我沒有得到它的工作。

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

我真正想要的是在同一個文件中有一個帶有警告,調試,信息的日誌。每天更改文件。

+0

什麼版本的苗條,你想使用。你似乎正在嘗試組合,但超薄3和2代碼。 – meun5

+0

日誌文件可以通過網絡服務器寫入嗎? –

+0

我正在使用3.8。我認爲這是最新的一個。 – user1298272

回答

2

slim-skeleton應用程序展示如何整合獨白。

  1. 註冊與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; 
    }; 
    
  2. 用它在你關閉:

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

日誌將OUT輸出到標準輸出,讓你」你會看到你的apache錯誤日誌,或者如果你正在使用內置的PHP服務器,在終端中。

+1

謝謝!最後我得到了這個工作。 – user1298272