Как настроить разные файлы для Monolog в Silex

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

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

Моя текущая конфигурация


person M_F    schedule 27.03.2013    source источник
comment
Если вы не можете этого сделать, возможно, вы могли бы добавить разделители к комментариям журнала, а затем написать сценарий для извлечения этих комментариев в другие файлы.   -  person gunnx    schedule 28.03.2013
comment
Только что заметил, что можно настроить Monolog. silex.sensiolabs.org/doc/providers/monolog.html#customization - там вы можете попробовать добавить новый файл журнала. $monolog-›pushHandler(новый StreamHandler('path/to/your.log', Logger::WARNING))   -  person gunnx    schedule 28.03.2013


Ответы (2)


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

конфиг.yaml:

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

Расширенныймонологпровидер.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) { }
}
person mcuadros    schedule 29.04.2013

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

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;
});
person Marcelo Aymone    schedule 25.10.2016
comment
И... Как войти в file.log или войти в other.log? - person Macbernie; 25.12.2016