3

I'm trying to create a custom logger, so I can log to a custom log file.

I've looked at and followed multiple tutorials that all say the same, however I keep getting the same error.

Tutorials that I followed:

This is not a duplicate of How to create custom Log file in Magento 2? as I followed everything that was explained there but got this error regardless.

I keep receiving the error: Missing required argument $name of Burst\MageNinjaApi\Logger\Logger., but far as I am aware, I am supplying the argument $name with <argument name="name" xsi:type="string">MageNinjaApiLogger</argument> in etc/di.xml.

Magento version: 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

I have encountered this problem as you had. The problem is the new configuration: <argument name="name" xsi:type="string">MageNinjaApiLogger</argument> in etc/di.xml is not updated.

Run php bin/magento cache:flush to update di.xml => It will solve this problem.

  • I did not test this but it sounds very plausible. Thanks for the response. – dbrekelmans Feb 28 '18 at 11:29
  • Yes. I have tested it. – thienphucvx Mar 1 '18 at 12:21
1

This was resolved by updating Magento to version 2.2.1. I did not find out what caused the problem.

0

For what it's worth, I ran into this error when I forgot to enable my logger module, but I enabled a different module that depended on it. Could be a missing dependency.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.