diff --git a/src/BootExtension.php b/src/BootExtension.php index 333ef79..2be5c19 100644 --- a/src/BootExtension.php +++ b/src/BootExtension.php @@ -26,8 +26,8 @@ protected static function registerRoutes() parent::routes(function ($router) { /* @var \Illuminate\Routing\Router $router */ $router->get('logs', 'Encore\Admin\LogViewer\LogController@index')->name('log-viewer-index'); - $router->get('logs/{file}', 'Encore\Admin\LogViewer\LogController@index')->name('log-viewer-file'); - $router->get('logs/{file}/tail', 'Encore\Admin\LogViewer\LogController@tail')->name('log-viewer-tail'); + $router->get('log', 'Encore\Admin\LogViewer\LogController@index')->name('log-viewer-file'); + $router->get('log/tail', 'Encore\Admin\LogViewer\LogController@tail')->name('log-viewer-tail'); }); } diff --git a/src/LogController.php b/src/LogController.php index 3f6e925..885a4be 100644 --- a/src/LogController.php +++ b/src/LogController.php @@ -9,11 +9,14 @@ class LogController extends Controller { - public function index($file = null, Request $request) + public function index(Request $request) { - if ($file === null) { + if (!$request->query('file')) { $file = (new LogViewer())->getLastModifiedLog(); - } + + }else{ + $file = $request->query('file'); + } return Admin::content(function (Content $content) use ($file, $request) { $offset = $request->get('offset'); @@ -36,10 +39,10 @@ public function index($file = null, Request $request) }); } - public function tail($file, Request $request) + public function tail(Request $request) { + $file = $request->query('file'); $offset = $request->get('offset'); - $viewer = new LogViewer($file); list($pos, $logs) = $viewer->tail($offset); diff --git a/src/LogViewer.php b/src/LogViewer.php index 96eef0c..b720066 100644 --- a/src/LogViewer.php +++ b/src/LogViewer.php @@ -104,14 +104,41 @@ public function getFilesize() public function getLogFiles($count = 20) { $files = glob(storage_path('logs/*')); + $files = $this->getFiles(storage_path('logs')); + //递归获取所有文件 + $files = array_combine($files, array_map('filemtime', $files)); arsort($files); - $files = array_map('basename', array_keys($files)); - + $files = array_map(array($this,'getName'), array_keys($files)); + return array_slice($files, 0, $count); } - + //自定义递归方法获取 当前文件夹下所有 文件: Array + private function getFiles($directory){ + $files = glob("$directory/*"); + + $array = array(); + foreach($files as $file){ + if(is_file($file)){ + $array[] = $file; + continue; + } + if(is_dir($file)){ + $array = array_merge($array,$this->getFiles($file)); + } + } + return $array; + } + + private function getName($file){ + $array = explode('/logs/',$file); + + if(count($array)>1){ + return $array[1]; + } + return $file; + } /** * Get the last modified log file. * @@ -120,7 +147,6 @@ public function getLogFiles($count = 20) public function getLastModifiedLog() { $logs = $this->getLogFiles(); - return current($logs); }