Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.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
通过ServiceProvider创建新的laravel日志记录通道_Laravel_Logging - Fatal编程技术网

通过ServiceProvider创建新的laravel日志记录通道

通过ServiceProvider创建新的laravel日志记录通道,laravel,logging,Laravel,Logging,我正在创建一个Laravel包。是否可以通过ServiceProvider类创建新的日志记录通道 我已经在我的config/logging.php中手动创建了一个新的日志通道,但是我更希望该包将来能自动为我创建这个通道 更新: 我有一个Laravel包,其中将使用它自己的日志堆栈和文件。下面是我现在在config/logging.php中的代码: 'deployment' => [ 'driver' => 'single', 'path' => storage_

我正在创建一个Laravel包。是否可以通过ServiceProvider类创建新的日志记录通道

我已经在我的
config/logging.php
中手动创建了一个新的日志通道,但是我更希望该包将来能自动为我创建这个通道

更新: 我有一个Laravel包,其中将使用它自己的日志堆栈和文件。下面是我现在在
config/logging.php
中的代码:

'deployment' => [
    'driver' => 'single',
    'path' => storage_path('logs/deployment.log'),
    'level' => 'debug',
],
谢谢。

您可以使用
app('log')
从服务容器获取LogManager单例,并使用
公共函数堆栈(array$channels,$channel=null)
方法传入要添加的通道数组

app('log')->stack([
    'channels' => [
        'test' => [
            'driver' => 'daily',
            'path' => storage_path('logs/test.log'),
            'level' => 'debug',
            'days' => 30,
        ]
    ]
]);
你可以用

$this->app->make('config')->set('logging.channels.deployment', [
    'driver' => 'single',
    'path' => storage_path('logs/deployment.log'),
    'level' => 'debug',
]);

在您的
ServiceProvider::boot
方法中

当您说记录通道时,是指单独的日志文件吗?或者你的意思是像
info
debug
。在
config/logging.php
中,您可以定义新的通道,在其中输出到不同的文件(如果这是所需的操作)。这并不能回答问题。我已经在
config/logging.php
文件中添加了日志配置。我希望通过编程实现这一点。更新了答案,以解决在运行时添加其他记录器配置的问题。我不知道为什么要在运行时添加配置。。。或者在创建日志时如何知道使用哪个通道。如果你分享你尝试做的事情背后的原因,你的问题可能会有不同的解决方案。我已经更新了我的问题。你的答案似乎有效,但我还没有测试过。谢谢你的回答。好的。实际上,听起来您只是希望用户能够安装自己的预定义配置。这是通过出版来实现的。这里有更多信息(使用配置示例):@zyglobe您引用的文档没有回答这个问题,因为有一个自定义包发布它自己的文件不会将新条目添加到已经存在的配置文件中,即
config/logging.php