2012-04-16 65 views
0

簡而言之,我試圖使用我在自定義處理程序服務中定義的記錄器服務。在Symfony2的AuthenticationHandler類中使用自定義記錄器服務

我config.yml

services: 
authentication_handler: 
    class: Panasonic\LoginBundle\Handler\AuthenticationHandler 
    arguments: [ @custom_logger ] 

custom_logger: 
    class: Monolog\Logger 
    arguments: [login] 
    calls: 
     - [ pushHandler, [ @custom_logger_stream ]] 

custom_logger_stream: 
    class: Monolog\Handler\RotatingFileHandler 
    arguments: [ %kernel.logs_dir%/test.log, 30, 200 ] 

「服務:」 在我的代碼,DNT的擔心以及縮進。

我包/處理器/的AuthenticationHandler

namespace Panasonic\LoginBundle\Handler; 

use Monolog\Logger; 
use Symfony\Component\Security\Http\Authentication\AuthenticationSuccessHandlerInterface; 
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; 
use Symfony\Component\HttpFoundation\Request; 
use Symfony\Component\HttpFoundation\Response; 

class AuthenticationHandler implements AuthenticationSuccessHandlerInterface 
{ 

private $custom_logger; 

public function __constructor(Logger $custom_logger) 
{ 
    $this->custom_logger = $custom_logger; 
} 

public function onAuthenticationSuccess(Request $request, 
             TokenInterface $token) 
{ 
    $log = $this->custom_logger; 

    $log->addWarning('Foo'); 
    $log->addError('Bar'); 
    die; 

    //  var_dump($token); die; 
    //  var_dump($request->getSession()); die; 
} 
} 

我越來越:

Fatal error: Call to a member function addWarning() on a non-object in ... Panasonic\LoginBundle\Handler\AuthenticationHandler.php on line 22 

注:我知道我應該返回onAuthenticationSuccess的響應,它其實uncomplete,但我知道它的工作原理,我從var_dumps得到了結果。

我猜噴射不好,應該怎麼做?我無法弄清楚在這裏要做什麼。請幫助

引用我檢查: Access services inside a regular class

http://martinsikora.com/symfony2-and-dependency-injection

+0

我覺得這個錯誤或者在custom_logger:class:Monolog \ LoggerSymfony \ Bridge \ Monolog \ Logger中,並且應該在我的處理程序中使用LoggerInterface。我通過重新編寫我的代碼來解決我與PéCé給出的鏈接有關的問題。 – Rishi 2012-04-17 14:03:10

回答

相關問題