【问题标题】:Writing (Mono)logs to different database tables将(单声道)日志写入不同的数据库表
【发布时间】:2014-12-15 19:14:49
【问题描述】:

我目前正在一个表中记录所有交互到我的数据库(添加的用户、更新的用户……)。

来自我的 userService 的示例:

public function addUserAction() 
{
    $this->logger->alert("Added user!");

    // Code that adds the user to the database (not relevant for my question)
    // ...
}

public function updateUserAction($user)
{
    $this->logger->alert("Updated user!");

    // Code that updates the user to the database (not relevant for my question)
    // ...
}

现在我想有如下单独的表:log_added_users、log_updated_users 等...

我在 config.yml 中配置了一个通道和一个处理程序 我已将记录器注入 userService 并用我的频道标记它。

services:
    userService:
        class: Acme\Services\UserService
        arguments: ["@logger"]
        tags:
            - { name: monolog.logger, channel: my_channel }

我想知道我应该在哪里定义在哪个表中添加某个日志条目?我认为我不需要更多通道,因为我只能为注入的记录器定义一个(如上面的配置 sn-p 所示)

所以我正在考虑添加更多处理程序(每个数据库表一个)。问题是:在写入日志时,它将通过所有处理程序,从而将相同的日志添加到所有表中?

或者我应该将我的 updateUserAction 放在另一个服务中,这样我就可以使用另一个频道了吗?

任何帮助表示赞赏:)

【问题讨论】:

    标签: symfony doctrine-orm monolog


    【解决方案1】:

    我发现,对于您创建的每个频道,都会自动为您创建一个服务。 所以我只是将另一个记录器注入到 userService 中,并用新通道标记它们。

    这样我可以说例如:

    public function addUserAction()
    {
        $this->logger->alert("user added");
    }
    
    public function updateUserAction($user)
    {
        $this->updateLogger->alert("user updated");
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-07
      相关资源
      最近更新 更多