如何仅为在 symfony 中登录的用户创建自定义 Monolog 文件

Car*_*cia 2 php symfony monolog

我需要为用户实现一个简单的日志系统。在用户的捆绑操作中(例如),我想将 monolog 与这样的一些示例一起使用。

public function indexAction(){
        $logger = $this->get('logger');
        $logger->users('User {X} is logout');
}
Run Code Online (Sandbox Code Playgroud)

并且它会记录,例如将此日志(users.log)保存在特定文件中

Ste*_*hka 6

您可以使用频道来实现这一点。

可以创建自定义频道(在本例中user_channel)。user_handler创建的处理程序仅记录user_channel. 在控制器中,请求通道的特定记录器。使用此记录器记录的所有内容都将转到user_channel. user_handler只会将这些消息放入日志文件。

# app/config/config.yml
monolog:
    channels: ['user_channel']
    handlers:
        user_handler:
            level:    debug
            type:     stream
            path:     '%kernel.logs_dir%/user.log'
            channels: ['user_channel']
        main:
            level:    debug
            type:     stream
            path:     '%kernel.logs_dir%/log.log'
            channels: ['!user_channel'] #In case you don't want other handler to receive user_channel messages
Run Code Online (Sandbox Code Playgroud)

然后在控制器中您可以直接访问日志处理程序。

public function indexAction(){
        $logger = $this->get('monolog.logger.user_channel');
        $logger->debug('User {X} is logout');
}
Run Code Online (Sandbox Code Playgroud)

日志实体将被写入'%kernel.logs_dir%/user.log'.