Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.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
Symfony3记录器即服务_Symfony_Logging_Service - Fatal编程技术网

Symfony3记录器即服务

Symfony3记录器即服务,symfony,logging,service,Symfony,Logging,Service,我在symfony应用程序中有自定义类,我正在尝试在其中实现记录器,但没有成功。我尝试过这样的服务: #in app/config/services.yml services: ControlLib.logger.monolog: class: My\TestBundle\Lib\ControlsLib arguments: ["@logger"] tags: - { name: monolog.logger}

我在symfony应用程序中有自定义类,我正在尝试在其中实现记录器,但没有成功。我尝试过这样的服务:

#in app/config/services.yml
services:
    ControlLib.logger.monolog:
        class: My\TestBundle\Lib\ControlsLib
        arguments: ["@logger"] 
        tags:
            - { name: monolog.logger}

#in My/TestBundle/Lib/ControlsLib
class ControlsLib { 
 private $logger;

 public function __construct(LoggerInterface $logger    ) {
    $this->logger = $logger;
 }

 public function mainControl() {
     $this->logger->info(var_export('In my lib',true));
 }
}
我在调用函数时收到此消息

Catchable Fatal Error: Argument 1 passed to 
My\TestBundle\Lib\ControlsLib::__construct() must be an instance of 
Symfony\Component\HttpKernel\Log\LoggerInterface, none given

已测试您的代码,并按预期工作:

AppBundle/Lib/ControlsLib.php:
namespace AppBundle\Lib;

use Psr\Log\LoggerInterface;

class ControlsLib
{
    private $logger;

    public function __construct(LoggerInterface $logger)
    {
        $this->logger = $logger;
    }

    public function mainControl()
    {
        $this->logger->info(var_export('In my lib',true));
    }
}
app/config/services.yml:

AppBundle/Controller/AppController.php:

第32行的AppController.php: 控制B{#108▼ -记录器:记录器{#107▼ #名称:“应用程序” #处理程序:数组:2[▶] #处理器:阵列:2[▶] #微秒时间戳:真 } }
请注意,您的服务名称应该是小写的,因为symfony会自动将其小写。

测试了您的代码,并按预期工作:

AppBundle/Lib/ControlsLib.php:
namespace AppBundle\Lib;

use Psr\Log\LoggerInterface;

class ControlsLib
{
    private $logger;

    public function __construct(LoggerInterface $logger)
    {
        $this->logger = $logger;
    }

    public function mainControl()
    {
        $this->logger->info(var_export('In my lib',true));
    }
}
app/config/services.yml:

AppBundle/Controller/AppController.php:

第32行的AppController.php: 控制B{#108▼ -记录器:记录器{#107▼ #名称:“应用程序” #处理程序:数组:2[▶] #处理器:阵列:2[▶] #微秒时间戳:真 } }
请注意,您的服务名称应该是小写的,因为symfony会自动将其小写。

您可以在控制器中访问@logger服务吗?在控制器中,我只使用$this->get('logger')->info(var_export('test',true))它是workedcontrollib.logger.monolog应该是小写的,测试了你的代码,它就可以工作了。我把它改成小写,但它对我仍然不起作用。我在ControlsLib的u construct()中也有同样的错误。我想我错过了一些东西。回答了,但它可以工作。你能在控制器中访问@logger服务吗?在控制器中我只使用$this->get('logger')->info(var_export('test',true))和它的workedcontrollib.logger.monolog应该是小写的,测试了你的代码,它就工作了。我把它改成小写,但它仍然不适用于我。我在_构造()中有相同的错误关于ControlsLib。我想我错过了一些东西。回答,但它可以工作。它是捆绑包的服务文件还是应用程序的服务文件?我有完全相同的,但仍然是构造错误。我不理解AppBundle/Controller/AppController.php中的部分,我没有这种奇怪的东西,尝试删除服务的“标记”部分。仍然存在问题“可捕获的致命错误:传递给My\TestBundle\Lib\ControlsLib::\uu construct()的参数1必须实现接口Psr\Log\LoggerInterface,未给定任何”。Can”不要做更多的抱歉。删除一个重写服务定义的类。尝试另一个类…它是捆绑包的服务文件还是应用程序的服务文件?我有完全相同的,但仍然是构造错误。我不理解AppBundle/Controller/AppController.php中的部分,我没有这个奇怪的,请尝试删除“标记”服务的一部分。仍然存在问题“可捕获的致命错误:传递给My\TestBundle\Lib\ControlsLib::\uu construct()的参数1必须实现接口Psr\Log\LoggerInterface,未给定”。无法执行更多抱歉。请删除一个,然后重写服务定义。尝试其他类。。。
$this->get('controllib.logger.monolog')->mainControl();
dump($this->get('controllib.logger.monolog')); die();