Logging 如何在Silex中为Monolog设置不同的文件

Logging 如何在Silex中为Monolog设置不同的文件,logging,silex,channels,monolog,Logging,Silex,Channels,Monolog,主题。我想在不同的文件中记录一些信息,在搜索Symfony 2的许多示例时,我使用Silex和yaml配置。如何设置它 # console logging options monolog.logfile: '/var/log/daemon.log' monolog.level: error monolog.name: 'daemon' 我当前的配置您需要添加一个额外的提供程序,以使其类似于这样(我只是从头开始编写,希望我能工作): config.yaml: monolog.extra.logf

主题。我想在不同的文件中记录一些信息,在搜索Symfony 2的许多示例时,我使用Silex和yaml配置。如何设置它

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

我当前的配置

您需要添加一个额外的提供程序,以使其类似于这样(我只是从头开始编写,希望我能工作):

config.yaml:

monolog.extra.logfile: '/var/log/other.log'
monolog.extra.level: error
ExtendedMonogProvider.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) { }
}

只需在注册提供程序之后扩展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;
});

如果您无法做到这一点,也许您可以考虑在日志注释中添加分隔符,然后编写脚本将这些注释提取到其他文件中。注意到您可以自定义Monolog。-您可以尝试添加一个新的日志文件$monolog->pushHandler(新的StreamHandler('path/to/your.log',Logger::WARNING')和。。。如何登录file.log或other.log?