I tried to use a virtual type in cronjob as instance but without any success. When I use a real class it works as expected. Is there any hint to get virtual types working in cronjobs?
crontab.xml:
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Cron:etc/crontab.xsd">
<group id="mygroup">
<job name="myjob" instance="Vendor\Package\MyClass" method="execute">
<schedule>* * * * *</schedule>
</job>
</group>
</config>
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">
<virtualType name="Vendor\Package\Model\VirtualLoggerHandler" type="Magento\Framework\Logger\Handler\Base">
<arguments>
<argument name="fileName" xsi:type="string">/var/log/virtual.log</argument>
</arguments>
</virtualType>
<virtualType name="Vendor\Package\Model\VirtualLogger" type="Magento\Framework\Logger\Monolog">
<arguments>
<argument name="name" xsi:type="string">virtual</argument>
<argument name="handlers" xsi:type="array">
<item name="debug" xsi:type="object">Vendor\Package\Model\VirtualLoggerHandler</item>
<item name="error" xsi:type="object">Vendor\Package\Model\VirtualLoggerHandler</item>
<item name="critical" xsi:type="object">Vendor\Package\Model\VirtualLoggerHandler</item>
</argument>
</arguments>
</virtualType>
<virtualType name="Vendor\Package\MyClass" type="Vendor\Package\BaseClass" shared="true">
<arguments>
<argument name="logger" xsi:type="object">Vendor\Package\Model\VirtualLogger</argument>
</arguments>
</virtualType>
</config>