Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel:在logging.php配置之外添加日志通道(插件开发)_Php_Laravel_Logging_Laravel 5.8_Monolog - Fatal编程技术网

Laravel:在logging.php配置之外添加日志通道(插件开发)

Laravel:在logging.php配置之外添加日志通道(插件开发),php,laravel,logging,laravel-5.8,monolog,Php,Laravel,Logging,Laravel 5.8,Monolog,我正在开发laravel插件/软件包。 我们希望在主项目配置之外定义自己的记录器(config/logger.php) 我在ServiceProviderregister()函数中尝试了以下操作 基于独白测试代码 $partLogger = new Logger('vendor_part-log'); $partLogHandler = new StreamHandler(storage_path('logs/vendor/part-log.log', Logger::DEBUG)); $par

我正在开发laravel插件/软件包。
我们希望在主项目配置之外定义自己的记录器(
config/logger.php

我在ServiceProvider
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内部不起作用。
我也无法从
注册表::

所以问题是新频道不会注册


Laravel内部是否使用了不同的注册表,或者我是否需要一个完全不同的解决方案来实现这一点?

虽然我们仍然希望有一个更自动化的解决方案,但我们已经妥协,并使用静态函数作为配置源

config/logging.php
中:

在顶部,用
$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',
            ],
        ];
    }

您能告诉我们您到底遇到了什么问题或错误吗?没有错误,我只是无法注册新的日志通道。@HTDutchy我想
Registry::addLogger($partLogger,'vendor\u part-log'));
行不需要。@JinalSomaiya如果不需要它,它就已经可以工作了。记录器是一个新实例,它不会神奇地连接到任何现有的东西。