3030use lindemannrock \iconmanager \services \IconSetsService ;
3131use lindemannrock \iconmanager \utilities \ClearIconCache ;
3232use lindemannrock \iconmanager \variables \IconManagerVariable ;
33+ use lindemannrock \logginglibrary \LoggingLibrary ;
3334use yii \base \Event ;
3435use craft \console \Application as ConsoleApplication ;
3536use craft \services \Utilities ;
@@ -171,12 +172,15 @@ public function getCpNavItem(): ?array
171172 ],
172173 ];
173174
174- if (Craft::$ app ->getUser ()->checkPermission ('accessPlugin-icon-manager ' )) {
175- $ item ['subnav ' ]['logs ' ] = [
176- 'label ' => Craft::t ('icon-manager ' , 'Logs ' ),
177- 'url ' => 'icon-manager/logs ' ,
178- ];
175+ // Add logs section using the logging library (only if installed)
176+ if (Craft::$ app ->getPlugins ()->isPluginInstalled ('logging-library ' ) &&
177+ Craft::$ app ->getPlugins ()->isPluginEnabled ('logging-library ' )) {
178+ $ item = LoggingLibrary::addLogsNav ($ item , $ this ->handle , [
179+ 'accessPlugin-icon-manager '
180+ ]);
181+ }
179182
183+ if (Craft::$ app ->getUser ()->checkPermission ('accessPlugin-icon-manager ' )) {
180184 $ item ['subnav ' ]['settings ' ] = [
181185 'label ' => Craft::t ('icon-manager ' , 'Settings ' ),
182186 'url ' => 'icon-manager/settings ' ,
@@ -203,8 +207,8 @@ function(RegisterUrlRulesEvent $event) {
203207 'icon-manager/icon-sets/<iconSetId:\d+> ' => 'icon-manager/icon-sets/edit ' ,
204208 'icon-manager/icon-sets/delete ' => 'icon-manager/icon-sets/delete ' ,
205209 'icon-manager/icon-sets/refresh-icons ' => 'icon-manager/icon-sets/refresh-icons ' ,
206- 'icon-manager/logs ' => 'icon-manager /logs/index ' ,
207- 'icon-manager/logs/download ' => 'icon-manager /logs/download ' ,
210+ 'icon-manager/logs ' => 'logging-library /logs/index ' ,
211+ 'icon-manager/logs/download ' => 'logging-library /logs/download ' ,
208212 'icon-manager/settings ' => 'icon-manager/settings/index ' ,
209213 'icon-manager/settings/save ' => 'icon-manager/settings/save ' ,
210214 'icon-manager/icons/render ' => 'icon-manager/icons/render ' ,
@@ -353,54 +357,16 @@ private function _clearIconCache(): void
353357 */
354358 private function _registerLogTarget (): void
355359 {
356- // Skip if already configured
357- if (isset (Craft::$ app ->getLog ()->targets ['icon-manager ' ])) {
358- return ;
359- }
360-
361- // Get base logs path
362- $ logsPath = Craft::$ app ->getPath ()->getLogPath ();
363-
364- // Use date-based log file naming
365- $ date = date ('Y-m-d ' );
366- $ logFile = $ logsPath . "/icon-manager- {$ date }.log " ;
367-
368- // Get log level from settings with fallback
369- $ logLevel = $ this ->getSettings ()->logLevel ?? 'error ' ;
370-
371- // Map log level to array of levels to include
372- $ levels = match ($ logLevel ) {
373- 'trace ' => ['error ' , 'warning ' , 'info ' , 'trace ' ],
374- 'info ' => ['error ' , 'warning ' , 'info ' ],
375- 'warning ' => ['error ' , 'warning ' ],
376- 'error ' => ['error ' ],
377- default => ['error ' , 'warning ' , 'info ' ]
378- };
379-
380- // Create a new log target instance
381- $ target = new \yii \log \FileTarget ([
382- 'logFile ' => $ logFile ,
383- 'categories ' => ['icon-manager ' ],
384- 'logVars ' => [],
385- 'levels ' => $ levels ,
386- 'maxFileSize ' => 10240 , // 10MB
387- 'maxLogFiles ' => 30 , // Keep 30 days
388- 'prefix ' => function ($ message ) {
389- $ user = Craft::$ app ->has ('user ' , true ) ? Craft::$ app ->getUser () : null ;
390- $ userId = $ user && !$ user ->getIsGuest () ? $ user ->getId () : '- ' ;
391- return "[user: {$ userId }] " ;
392- },
393- 'rotateByCopy ' => false
360+ // Configure logging using the new logging library
361+ $ settings = $ this ->getSettings ();
362+
363+ LoggingLibrary::configure ([
364+ 'pluginHandle ' => $ this ->handle ,
365+ 'pluginName ' => $ this ->name ,
366+ 'logLevel ' => $ settings ->logLevel ,
367+ 'enableLogViewer ' => true ,
368+ 'permissions ' => ['iconManager:viewLogs ' ],
394369 ]);
395-
396- // Add the target to the log dispatcher and ensure it's available immediately
397- Craft::$ app ->getLog ()->targets ['icon-manager ' ] = $ target ;
398-
399- // Initialize the target immediately
400- $ target ->init ();
401-
402- // Mark as registered
403- self ::$ _logTargetRegistered = true ;
404370 }
405371
406372}
0 commit comments