首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >把单曲储存到数据库里?

把单曲储存到数据库里?
EN

Stack Overflow用户
提问于 2022-06-15 07:47:28
回答 1查看 104关注 0票数 1

我需要将所有的用户活动登录到DB中,所以我想将Monolog存储到数据库中。

到目前为止,我已经做了以下工作:

monolog.yaml

代码语言:javascript
复制
monolog:
    channels: ['db']
    handlers:
        db:
            channels: ['db']
            type: service
            id: monolog.db_handler

services.yaml

代码语言:javascript
复制
services:
    ...
    ...

    monolog.db_handler:
        class: App\Service\MonologDBHandler
        arguments: ['@doctrine.orm.entity_manager']

MonologDBHandler.php

代码语言:javascript
复制
use App\Entity\Log;
use Doctrine\ORM\EntityManagerInterface;
use Monolog\Handler\AbstractProcessingHandler;

class MonologDBHandler extends AbstractProcessingHandler
{
    public function __construct(private readonly EntityManagerInterface $em)
    {
        parent::__construct();
    }

    protected function write(array $record): void
    {
        $logEntry = new Log();
        $logEntry->setContext($record['context']);

        $this->em->persist($logEntry);
        $this->em->flush();
    }
}

在我的控制器里,

代码语言:javascript
复制
$this->logger->info('something happened');

我没有看到任何插入到我的数据库。有人能帮帮我吗?

EN

回答 1

Stack Overflow用户

发布于 2022-10-17 12:46:39

根据这个示例,您需要告诉您的记录器您正在登录到您创建的'db',这样$this->logger->info('something happened');就会变成$this->logger->info('db', 'something happened');。实际上,处理程序并不是由所有事件触发的,只有带有'db'标记的事件。

如果你想要更多关于频道的信息,你可以检查它们的这里

我希望它能帮到你。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72627622

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档