简体   繁体   中英

How to create a custom monolog file only for users login in symfony

I need implement a simple log system for users. In the bundle actions of users (for example), i would like to use monolog with some samples like this.

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

And it log, saves in specific file this log (users.log) for example

You can achieve this with a channels.

The custom channel could be created (in this case user_channel ). The handler user_handler is created that only log records for the user_channel . In controller the specific logger for a channel is requested. Everything that is logged with this logger will go to user_channel . user_handler will put only that messages to the log file.

# 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

Then in controller you can directly access the log handler.

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

The log entity will be written to '%kernel.logs_dir%/user.log' .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM