Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Logging symfony2中的自定义记录器和monolog格式化程序-configure services.xml_Logging_Symfony_Formatter_Monolog - Fatal编程技术网

Logging symfony2中的自定义记录器和monolog格式化程序-configure services.xml

Logging symfony2中的自定义记录器和monolog格式化程序-configure services.xml,logging,symfony,formatter,monolog,Logging,Symfony,Formatter,Monolog,我已经开始学习Symfony2,目前我正在处理一个命令,我想单独记录 我的目标是使用自定义记录器并为我的命令获取一个干净的日志文件。 我在一个使用xml配置文件的项目中工作,但我不知道如何转换一些.yml参数和选项 我已经阅读并获得了一个独立的工作日志文件 <?xml version="1.0" ?> <container xmlns="http://symfony.com/schema/dic/services" xmlns:xsi="http://www.w3.or

我已经开始学习Symfony2,目前我正在处理一个命令,我想单独记录

我的目标是使用自定义记录器并为我的命令获取一个干净的日志文件。 我在一个使用xml配置文件的项目中工作,但我不知道如何转换一些.yml参数和选项

我已经阅读并获得了一个独立的工作日志文件

<?xml version="1.0" ?>
<container xmlns="http://symfony.com/schema/dic/services"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">

    <services>
        <service id="myproject_mycommand.logger" class="Symfony\Bridge\Monolog\Logger">
            <argument>myproject_mycommand.logger</argument>
            <call method="pushHandler">
                <argument type="service" id="myproject_mycommand.logger_handler" />
            </call>
        </service>

        <service id="myproject_mycommand.logger_handler" class="Monolog\Handler\StreamHandler">
            <argument>%kernel.logs_dir%/my_custom_file_log.log</argument>
        </service>
    </services>
</container>


“[%%datetime%%]%%消息%%\n”
但是我不知道如何在xml文件中配置这个简单的格式化程序


谢谢你的帮助

您需要创建格式化程序,并从
FormatterInterface
扩展它,并实现
format
formatBatch

然后添加服务定义

<service id="myproject_mycommand.logger.formatter" class="MyBundle\Formatter\XmlFormatter">
    <argument>some arguments if you need one</argument>
</service>

<service id="myproject_mycommand.logger_handler" class="Monolog\Handler\StreamHandler">
    <argument>%kernel.logs_dir%/my_custom_file_log.log</argument>
    <call method="setFormatter">
        <argument type="service" id="myproject_mycommand.logger.formatter"/>
    </call>    
</service>

如果你需要的话,可以提供一些论据
%kernel.logs\u dir%/my\u custom\u file\u log.log

就这样。要了解如何格式化,您可以查看monolog bundle源代码中不同格式化程序的示例。

您需要创建格式化程序,并从
FormatterInterface
扩展它,并实现
format
formatBatch

然后添加服务定义

<service id="myproject_mycommand.logger.formatter" class="MyBundle\Formatter\XmlFormatter">
    <argument>some arguments if you need one</argument>
</service>

<service id="myproject_mycommand.logger_handler" class="Monolog\Handler\StreamHandler">
    <argument>%kernel.logs_dir%/my_custom_file_log.log</argument>
    <call method="setFormatter">
        <argument type="service" id="myproject_mycommand.logger.formatter"/>
    </call>    
</service>

如果你需要的话,可以提供一些论据
%kernel.logs\u dir%/my\u custom\u file\u log.log
就这样。要了解如何格式化,您可以查看monolog bundle源中不同格式化程序的示例

<service id="myproject_mycommand.logger.formatter" class="MyBundle\Formatter\XmlFormatter">
    <argument>some arguments if you need one</argument>
</service>

<service id="myproject_mycommand.logger_handler" class="Monolog\Handler\StreamHandler">
    <argument>%kernel.logs_dir%/my_custom_file_log.log</argument>
    <call method="setFormatter">
        <argument type="service" id="myproject_mycommand.logger.formatter"/>
    </call>    
</service>