Пользовательский регистратор Magento 2 "Отсутствует необходимый аргумент $name"
Я пытаюсь создать пользовательский регистратор, чтобы я мог войти в пользовательский файл журнала.
Я просмотрел и проследил за несколькими учебными пособиями, в которых говорится одно и то же, однако я продолжаю получать одну и ту же ошибку.
Учебные пособия, которые я последовало:
- http://www.thienphucvx.com/magento-2-logging-to-a-custom-file/
- https://www.maximehuran.fr/en/logs-and-magento-2/
- https://ranasohel.me/2016/06/26/how-to-create-a-custom-logger-in-magento-2/
- Как создать пользовательский файл журнала в Magento 2?
Это не дубликат Как создать пользовательский файл журнала в 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;
}
3 answers
Я столкнулся с этой проблемой, как и вы. Проблема заключается в новой конфигурации:
<argument name="name" xsi:type="string">MageNinjaApiLogger</argument>
в etc/di.xml
не обновляется.
Запустите php bin/magento cache:flush
для обновления di.xml
=> Это решит эту проблему.
Эта проблема была решена путем обновления Magento до версии 2.2.1. Я так и не выяснил, в чем причина проблемы.
Как бы то ни было, я столкнулся с этой ошибкой, когда забыл включить свой модуль регистратора, но я включил другой модуль, который зависел от него. Может быть отсутствующая зависимость.