मैं लार्वा प्लगइन/पैकेज पर काम कर रहा हूं।
हम मुख्य प्रोजेक्ट कॉन्फ़िगरेशन (config/logger.php) के बाहर अपने स्वयं के लॉगर को परिभाषित करना चाहते हैं।

मैंने सर्विसप्रोवाइडर register() फंक्शन में निम्नलिखित कोशिश की है।

मोनोलॉगर टेस्ट कोड के आधार पर।

$partLogger = new Logger('vendor_part-log');
$partLogHandler = new StreamHandler(storage_path('logs/vendor/part-log.log', Logger::DEBUG));
$partLogger->pushHandler($partLogHandler);
// MonoLog Registry
Registry::addLogger($partLogger, 'vendor_part-log');

अफसोस की बात है कि यह Laravel के अंदर काम नहीं करता है।
मुझे Registry:: से अन्य मौजूदा लॉगर भी नहीं मिल रहे हैं

तो समस्या यह है कि नया चैनल पंजीकृत नहीं होगा।

क्या लैरावेल के अंदर उपयोग में एक अलग रजिस्ट्री है या क्या मुझे इसे प्राप्त करने के लिए एक पूरी तरह से अलग समाधान की आवश्यकता है?

1
HTDutchy 21 अगस्त 2019, 14:03

1 उत्तर

सबसे बढ़िया उत्तर

जबकि हम अभी भी अधिक स्वचालित समाधान चाहते हैं, हमने समझौता किया है और कॉन्फ़िगरेशन के स्रोत के रूप में एक स्थिर फ़ंक्शन का उपयोग कर रहे हैं।

config/logging.php में:

सबसे ऊपर return [... को $config = [... से बदलें।

और सबसे नीचे निम्नलिखित पंक्तियाँ जोड़ें:

$config['channels'] = array_merge(
    $config['channels'],
    \FooVendor\Bar\Classes\Logs::getLogs(),
);

return $config;

और निम्नलिखित फ़ंक्शन के साथ उल्लिखित वर्ग बनाएं:

    /**
     * Configs to be merged in config/logging.php
     * @return array
     */
    public static function getLogs()
    {
        return [
            'foo_partlogger' => [
                'driver' => 'single',
                'path' => storage_path('logs/foo/partlogger.log'),
                'level' => 'debug',
            ],
            'foo_second_partlogger' => [
                'driver' => 'single',
                'path' => storage_path('logs/foo/second_partlogger.log'),
                'level' => 'debug',
            ],
        ];
    }
1
HTDutchy 22 अगस्त 2019, 13:44