2013-03-27 7 views
3

Тема. Я хочу регистрировать некоторую информацию в другом файле, в поисках много примеров для Symfony 2, но я использую Silex с конфигурацией yaml. Как его настроить?Как настроить различные файлы для Monolog в Silex

# console logging options 
monolog.logfile: '/var/log/daemon.log' 
monolog.level: error 
monolog.name: 'daemon' 

Мой текущий конфиг

+0

Если вы не можете этого сделать, возможно, вы можете посмотреть добавление разделителей в свои комментарии к журналу, а затем написать сценарий для извлечения этих комментариев в другие файлы. – gunnx

+0

Только что заметил, что вы можете настроить Монолог. http://silex.sensiolabs.org/doc/providers/monolog.html#customization - там вы можете попробовать добавить новый файл журнала. $ monolog-> pushHandler (новый StreamHandler ('путь/to/your.log', Logger :: WARNING)) – gunnx

ответ

1

Вам нужно добавить дополнительный поставщик для сделать это что-то вроде этого (я просто писал с нуля так, я буду работать, я надеюсь):

config.yaml :

monolog.extra.logfile: '/var/log/other.log' 
monolog.extra.level: error 

ExtendedMonologProvider.php:

<?php 
use Silex\ServiceProviderInterface; 
use Silex\Application; 

use Silex\Provider\MonologServiceProvider; 

class ExtendedMonologProvider implements ServiceProviderInterface { 
    public function register(Application $app) { 
     $app->register(new MonologServiceProvider()); 

     $app['monolog.extra.handler'] = function() use ($app) { 
      return new StreamHandler($app['monolog.extra.logfile'], $app['monolog.extra.level']); 
     }; 

     $app['monolog'] = $app->share($app->extend('monolog', function($log, $app) { 
      $log->pushHandler($app['monolog.extra.handler']); 
      return $log; 
     })); 
    } 

    public function boot(Application $app) { } 
} 
1

Просто пропустите монолог после регистрации и нажмите новый обработчик, вы можете использовать любой обработчик монолога или ваш пользовательский обработчик.

use Silex\Provider\MonologServiceProvider; 
use Monolog\Handler\StreamHandler; 
use Monolog\Logger; 

$app->register(new MonologServiceProvider(), [ 
    'monolog.logfile' => /your/log/path/file.log', 
]); 

//extend monolog 
$app->extend('monolog', function ($monolog, $app) { 
    $monolog->pushHandler(new StreamHandler('/your/log/path/other.log', Logger::DEBUG)); 
    return $monolog; 
}); 
+2

И ... Как войти в файл.log или войти в другой.log? – Macbernie

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

  • Нет связанных вопросов^_^