Hello

J'ai suivis ce tuto : https://nehalist.io/logging-events-t...se-in-symfony/

Mais je n'y arrive pas j'ai l'erreur :

Attempted to call an undefined method named "info" of class "AcMarche\LoggerBundle\Service\MonologDBHandler

Je comprends pas pq j'ai bien tout suivi...

Mon service.yml

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
services:
    monolog.db_handler:
        class: AcMarche\LoggerBundle\Service\MonologDBHandler
        arguments: ['@doctrine.orm.entity_manager']
mon config_dev.yml

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
monolog:
    channels: ['db']
    handlers:
        main:
            type: stream
            path: '%kernel.logs_dir%/%kernel.environment%.log'
            level: debug
            channels: ['!event']
        console:
            type: console
            process_psr_3_messages: false
            channels: ['!event', '!doctrine', '!console']        
        db:
            channels: ['db']
            type: service
            id: monolog.db_handler
Mon handler:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
 
 
use AcMarche\LoggerBundle\Entity\Log;
use Doctrine\ORM\EntityManagerInterface;
use Monolog\Handler\AbstractProcessingHandler;
 
class MonologDBHandler extends AbstractProcessingHandler
{
    /**
     * @var EntityManagerInterface
     */
    protected $em;
 
    /**
     * MonologDBHandler constructor.
     * @param EntityManagerInterface $em
     */
    public function __construct(EntityManagerInterface $em)
    {
        parent::__construct();
        $this->em = $em;
    }
 
    /**
     * Called when writing to our database
     * @param array $record
     */
    protected function write(array $record)
    {
        $logEntry = new Log();
        $logEntry->setMessage($record['message']);
        $logEntry->setLevel($record['level']);
        $logEntry->setLevelName($record['level_name']);
        $logEntry->setExtra($record['extra']);
        $logEntry->setContext($record['context']);
 
        $this->em->persist($logEntry);
        $this->em->flush();
    }
}
Mon controlleur

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
/**
     * @Route("/")
     */
    public function indexAction()
    {
        $log = $this->get('monolog.db_handler');
        $log->info(
            'something happened',
            [
                'foo' => 'bar',
            ]
        );
 
        return $this->render('AcMarcheLoggerBundle:Default:index.html.twig');
    }
Bref du gros copier coller j'ai du zapper un truc quelque part...

Merci