Пользовательский регистратор Magento 2 "Отсутствует необходимый аргумент $name"


Я пытаюсь создать пользовательский регистратор, чтобы я мог войти в пользовательский файл журнала.

Я просмотрел и проследил за несколькими учебными пособиями, в которых говорится одно и то же, однако я продолжаю получать одну и ту же ошибку.

Учебные пособия, которые я последовало:

Это не дубликат Как создать пользовательский файл журнала в Magento 2? поскольку я следил за всем, что там было объяснено но все равно получил эту ошибку.

Я продолжаю получать сообщение об ошибке: Missing required argument $name of Burst\MageNinjaApi\Logger\Logger., но, насколько мне известно, я предоставляю аргумент $name с <argument name="name" xsi:type="string">MageNinjaApiLogger</argument> в etc/di.xml.

Версия Magento: 2.1.10


App/code/Burst/MageNinjaApi/etc/di.xml

<?xml version="1.0" ?>

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    <preference for="Burst\MageNinjaApi\Catalog\Api\ProductRepositoryInterface" type="Burst\MageNinjaApi\Catalog\ProductRepository" />
    <preference for="Burst\MageNinjaApi\Quote\Api\GuestCartItemRepositoryInterface" type="Burst\MageNinjaApi\Quote\GuestCartItemRepository" />
    <preference for="Burst\MageNinjaApi\Quote\Api\Data\CartItemInterface" type="Burst\MageNinjaApi\Quote\Item" />

    <!-- Custom Logger -->
    <type name="Burst\MageNinjaApi\Logger\Handler\Debug">
        <arguments>
            <argument name="filesystem" xsi:type="object">Magento\Framework\Filesystem\Driver\File</argument>
        </arguments>
    </type>
    <type name="Burst\MageNinjaApi\Logger\Logger">
        <arguments>
            <argument name="name" xsi:type="string">MageNinjaApiLogger</argument>
            <argument name="handlers" xsi:type="array">
                <item name="debug" xsi:type="object">Burst\MageNinjaApi\Logger\Handler\Debug</item>
            </argument>
        </arguments>
    </type>
</config>

App/code/Burst/MageNinjaApi/Logger/Logger.php

<?php

namespace Burst\MageNinjaApi\Logger;

class Logger extends \Monolog\Logger {

}

App/code/Burst/MageNinjaApi/Logger/Handler/Debug.php

<?php

namespace Burst\MageNinjaApi\Logger\Handler;

use Magento\Framework\Logger\Handler\Base;
use Monolog\Logger;

class Debug extends Base {
  protected $fileName = '/var/log/MageNinjaApi/debug.log';
  protected $loggerType = Logger::DEBUG;
}
Author: dbrekelmans, 2017-12-05

3 answers

Я столкнулся с этой проблемой, как и вы. Проблема заключается в новой конфигурации: <argument name="name" xsi:type="string">MageNinjaApiLogger</argument> в etc/di.xml не обновляется.

Запустите php bin/magento cache:flush для обновления di.xml => Это решит эту проблему.

 10
Author: thienphucvx, 2018-02-28 11:32:31

Эта проблема была решена путем обновления Magento до версии 2.2.1. Я так и не выяснил, в чем причина проблемы.

 1
Author: dbrekelmans, 2017-12-06 09:46:29

Как бы то ни было, я столкнулся с этой ошибкой, когда забыл включить свой модуль регистратора, но я включил другой модуль, который зависел от него. Может быть отсутствующая зависимость.

 1
Author: siliconrockstar, 2019-07-25 16:47:48