2016-12-25 3 views
0

Я пытаюсь использовать Монолог в моем приложении Silex, согласно документуМонолог в Silex приложение

http://silex.sensiolabs.org/doc/master/providers/monolog.html 

Я объявляю MonologServiceProvider в файле app.php как следующие:

use Silex\Provider\MonologServiceProvider; 

$app->register(new MonologServiceProvider(), array(
    'monolog.logfile' => __DIR__ . '/../files/logs/log.log', 
)); 

И я стараюсь писать в моем файле log.log на контроллере:

use Monolog\Logger; 
use Monolog\Handler\StreamHandler; 

// In a controler 
$app['monolog']->info("test"); 
$app['monolog']->debug("test"); 
$app['monolog']->warning("test"); 
$app['monolog']->error("test"); 

у меня нет какой-либо ошибки, но он не работает в аль л.

Я просто не хочу помещать свое «тестовое» сообщение в файл log.log, как я могу это сделать?

Спасибо за помощь

+0

Что делает 'realpath (__DIR__. '/../ files/logs/log.log')' дать вам? Расположение файла, которое вы ожидаете? –

ответ

1

Я не могу ответить на ваш вопрос, основываясь на информации вы дали, но это медленно новости день здесь, так что наигрывал-рабочий сайт Silex с рабочим лесозаготовок. Все файлы находятся на Github, но я повторю их здесь для удобства чтения.

composer.json

{ 
    "require" : { 
     "silex/silex" : "^2.0", 
     "monolog/monolog" : "^1.0" 
    }, 
    "autoload" : { 
     "psr-4" : { 
      "community\\" : "src/" 
     } 
    } 
} 

открытый/index.php

<?php 

use \community\app\Application; 

require_once realpath(__DIR__ . '/../vendor/autoload.php'); 

$app = new Application(); 
$app["debug"] = true; 
$app->run(); 

SRC/приложение/application.php

<?php 

namespace community\app; 

use \Silex\Application as SilexApplication; 
use Silex\Provider\MonologServiceProvider; 

class Application extends SilexApplication { 

    function __construct() { 

     parent::__construct(); 
     $this->registerServices(); 
     $this->mountControllers(); 
    } 

    function registerServices(){ 
     $this->register(new MonologServiceProvider(), [ 
      "monolog.logfile" => realpath(__DIR__ . "/../../log") . "/general.log" 
     ]); 
    } 

    function mountControllers() { 
     $this->get('/testLog', 'community\controller\TestLogController::doGet'); 
    } 

} 

SRC/контроллер/TestLogController.php

<?php 

namespace community\controller; 

use community\app\Application; 
use Symfony\Component\HttpFoundation\Request; 
use Symfony\Component\HttpFoundation\Response; 

class TestLogController { 

    public function doGet(Request $request, Application $app) { 

     $app["monolog"]->info("hi!"); 

     return new Response("All good", Response::HTTP_OK); 
    } 
} 

что пишет журнал/general.log следующим образом:

[2016-12-28 13:58:05] app.INFO: hi! [] [] 

Одна вещь, которую я заметил, что, если путь к файлу журнала будет затыкать, то Монолог только кажется, проглотить его (что не совсем идеально). Это может быть вашей проблемой.

В любом случае, возьмите код выше и общайтесь с ним. Надеюсь, вы сможете разобраться в различиях между вашим и моим, и получите свою работу.

Смежные вопросы