如何编写和使用Monolog处理程序和通道

时间:2015-06-15 21:37:58

标签: php symfony monolog symfony-2.6

我已经阅读了一些文档here,但我仍然不清楚如何编写和使用自定义Monolog处理程序和频道。让我解释一下我想要实现的目标。我有一个自定义函数,我希望将该日志记录到名为custom.log的文件中。我通过在config.yml文件中设置这个来启用Doctrine登录到另一个文件:

monolog:
    handlers:
        #Logs Doctrine to a different channel
        doctrine:
            level:    debug
            type:     stream
            path:     "%kernel.logs_dir%/doctrine.log"
            channels: [doctrine]

如何为custom.log实现相同目标?

1 个答案:

答案 0 :(得分:5)

你可以这样试试,

monolog:
    channels: ["testchannel"]
    handlers:
        test:
            # log all messages (since debug is the lowest level)
            level:    debug
            type:     stream
            path:     "%kernel.logs_dir%/testchannel.log"
            channels: ["testchannel"]

在控制器中你可以得到记录器并做你的事情;

class DefaultController extends Controller
{
    public function indexAction()
    {

       $logger = $this->get('monolog.logger.testchannel');
       $logger->info("This one goes to test channel!!");
       return $this->render('AcmeBundle:Default:index.html.twig');
    }
}

您还可以通过运行命令php app/console container:debug monolog

来检查注册了哪些monolog处理程序和记录器