Subject。我想在不同的文件中記錄一些信息,搜索Symfony 2的很多例子,但是我使用了yile配置的Silex。如何設置它?如何爲Silex中的Monolog設置不同的文件
# console logging options
monolog.logfile: '/var/log/daemon.log'
monolog.level: error
monolog.name: 'daemon'
我目前的配置
Subject。我想在不同的文件中記錄一些信息,搜索Symfony 2的很多例子,但是我使用了yile配置的Silex。如何設置它?如何爲Silex中的Monolog設置不同的文件
# 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
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) { }
}
只需在註冊提供程序之後擴展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;
});
And ...如何登錄到file.log或登錄other.log? – Macbernie 2016-12-25 17:59:26
如果您無法做到這一點,也許您可以考慮在日誌註釋中添加分隔符,然後編寫腳本以將這些註釋提取到其他文件中。 – gunnx 2013-03-28 17:02:07
只是注意到你可以自定義Monolog。 http://silex.sensiolabs.org/doc/providers/monolog.html#customization - 您可以嘗試添加新的日誌文件。 $ monolog-> pushHandler(新的StreamHandler('path/to/your.log',Logger :: WARNING)) – gunnx 2013-03-28 17:07:22