如何在本地和测试环境中禁用日志通道
How do I disable a log channel on local and testing environment
在我的应用程序中,我有这些日志通道:
'general' => [
'driver' => 'single',
'path' => storage_path('logs/general.log'),
'level' => 'debug',
],
'jobs' => [
'driver' => 'stack',
'channels' => [
'general',
'slack'
],
],
'slack' => [
'driver' => 'slack',
'url' => /*Censored Hook URL*/,
'username' => 'MyApp',
'emoji' => ':gear:',
'level' => 'debug',
],
当我登录 job
频道时,我不想在本地或测试环境中登录 slack
日志,以避免在共享日志频道上出现重复和极其不需要的日志松弛。
那么我如何指定 slack
通道能够写入日志的环境。一种肮脏的方法是通过以下代码片段手动指定将写入哪些日志:
if(!App::environment(['local','testing')){
Log::channel('jobs')->info('Blah blah blah');
} else {
Log::channel('general')->info('Blah blah blah');
}
但是使用上面的代码,恐怕会使我的代码库变得难以阅读。那么你知道一个优雅的解决方案来处理我的日志吗?
您可以简单地将 jobs
拆分为 2 个条目,例如 jobs
和 jobs_without_slack
,让 jobs
保持原样,而 jobs_without_slack
将被配置为没有slack
是 channels
。然后使用不同的 .env.xy
文件进行测试(.env.testing
)、本地、开发(.env.develop
)等,并将 LOG_CHANNEL
设置为正确的日志记录,因此您不需要更改逻辑中的一行代码 ;)
在我的应用程序中,我有这些日志通道:
'general' => [
'driver' => 'single',
'path' => storage_path('logs/general.log'),
'level' => 'debug',
],
'jobs' => [
'driver' => 'stack',
'channels' => [
'general',
'slack'
],
],
'slack' => [
'driver' => 'slack',
'url' => /*Censored Hook URL*/,
'username' => 'MyApp',
'emoji' => ':gear:',
'level' => 'debug',
],
当我登录 job
频道时,我不想在本地或测试环境中登录 slack
日志,以避免在共享日志频道上出现重复和极其不需要的日志松弛。
那么我如何指定 slack
通道能够写入日志的环境。一种肮脏的方法是通过以下代码片段手动指定将写入哪些日志:
if(!App::environment(['local','testing')){
Log::channel('jobs')->info('Blah blah blah');
} else {
Log::channel('general')->info('Blah blah blah');
}
但是使用上面的代码,恐怕会使我的代码库变得难以阅读。那么你知道一个优雅的解决方案来处理我的日志吗?
您可以简单地将 jobs
拆分为 2 个条目,例如 jobs
和 jobs_without_slack
,让 jobs
保持原样,而 jobs_without_slack
将被配置为没有slack
是 channels
。然后使用不同的 .env.xy
文件进行测试(.env.testing
)、本地、开发(.env.develop
)等,并将 LOG_CHANNEL
设置为正确的日志记录,因此您不需要更改逻辑中的一行代码 ;)