2013-03-27 25 views
3

Subject。我想在不同的文件中記錄一些信息,搜索Symfony 2的很多例子,但是我使用了yile配置的Silex。如何設置它?如何爲Silex中的Monolog設置不同的文件

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

我目前的配置

+0

如果您無法做到這一點,也許您可​​以考慮在日誌註釋中添加分隔符,然後編寫腳本以將這些註釋提取到其他文件中。 – gunnx 2013-03-28 17:02:07

+0

只是注意到你可以自定義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

回答

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

只需在註冊提供程序之後擴展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; 
}); 
+2

And ...如何登錄到file.log或登錄other.log? – Macbernie 2016-12-25 17:59:26

相關問題