55
66use FD \LogViewer \Entity \Config \FinderConfig ;
77use FD \LogViewer \Entity \Config \LogFilesConfig ;
8+ use FD \LogViewer \Util \Arrays ;
89use Symfony \Component \Config \FileLocator ;
910use Symfony \Component \DependencyInjection \ContainerBuilder ;
1011use Symfony \Component \DependencyInjection \Extension \Extension as BaseExtension ;
1819 */
1920final class Extension extends BaseExtension
2021{
22+ private const DEFAULT_MONOLOG_CONFIG = [
23+ 'log_files ' => [
24+ 'monolog ' => [
25+ 'type ' => 'monolog ' ,
26+ 'name ' => 'Monolog ' ,
27+ 'downloadable ' => false ,
28+ 'deletable ' => false ,
29+ 'finder ' => [
30+ 'in ' => '%kernel.logs_dir% ' ,
31+ 'name ' => '*.log ' ,
32+ 'depth ' => '== 0 ' ,
33+ 'ignoreUnreadableDirs ' => true ,
34+ 'followLinks ' => false ,
35+ ],
36+ ]
37+ ]
38+ ];
39+
2140 /**
2241 * @inheritDoc
2342 * @throws Throwable
@@ -31,14 +50,15 @@ public function load(array $configs, ContainerBuilder $container): void
3150
3251 // add defaults
3352 if ($ mergedConfigs ['enable_default_monolog ' ]) {
34- $ mergedConfigs = self :: addMonologDefault ($ mergedConfigs );
53+ $ mergedConfigs = Arrays:: merge ($ mergedConfigs, self :: DEFAULT_MONOLOG_CONFIG );
3554 }
3655
3756 foreach ($ mergedConfigs ['log_files ' ] as $ key => $ config ) {
3857 $ container ->register ('fd.symfony.log.viewer.log_files_config.finder. ' . $ key , FinderConfig::class)
3958 ->setPublic (false )
4059 ->setArgument ('$inDirectories ' , $ config ['finder ' ]['in ' ])
4160 ->setArgument ('$fileName ' , $ config ['finder ' ]['name ' ])
61+ ->setArgument ('$depth ' , $ config ['finder ' ]['depth ' ])
4262 ->setArgument ('$ignoreUnreadableDirs ' , $ config ['finder ' ]['ignoreUnreadableDirs ' ])
4363 ->setArgument ('$followLinks ' , $ config ['finder ' ]['followLinks ' ]);
4464
@@ -61,27 +81,4 @@ public function getAlias(): string
6181 {
6282 return 'fd_log_viewer ' ;
6383 }
64-
65- /**
66- * @template T of array
67- * @phpstan-param T $configs
68- *
69- * @phpstan-return T
70- */
71- private static function addMonologDefault (array $ configs ): array
72- {
73- // monolog
74- $ configs ['log_files ' ]['monolog ' ]['type ' ] ??= 'monolog ' ;
75- $ configs ['log_files ' ]['monolog ' ]['name ' ] ??= 'Monolog ' ;
76- $ configs ['log_files ' ]['monolog ' ]['downloadable ' ] ??= false ;
77- $ configs ['log_files ' ]['monolog ' ]['deletable ' ] ??= false ;
78-
79- // finder
80- $ configs ['log_files ' ]['monolog ' ]['finder ' ]['in ' ] ??= '%kernel.logs_dir% ' ;
81- $ configs ['log_files ' ]['monolog ' ]['finder ' ]['name ' ] ??= '*.log ' ;
82- $ configs ['log_files ' ]['monolog ' ]['finder ' ]['ignoreUnreadableDirs ' ] ??= true ;
83- $ configs ['log_files ' ]['monolog ' ]['finder ' ]['followLinks ' ] ??= false ;
84-
85- return $ configs ;
86- }
8784}
0 commit comments