diff --git a/hb_client/src/router/index.js b/hb_client/src/router/index.js index 3991778..6999cb6 100644 --- a/hb_client/src/router/index.js +++ b/hb_client/src/router/index.js @@ -210,6 +210,16 @@ export const asyncRoutes = [ } ] }, + { + path: 'docs-link2', + component: Layout, + children: [ + { + path: process.env.VUE_APP_BASE_API + '/swagger/', + meta: { title: 'Swagger文档', icon: 'link', perms: ['dev_docs'] } + } + ] + }, { path: 'admin-link', component: Layout, diff --git a/hb_server/apps/em/models.py b/hb_server/apps/em/models.py index 70c558a..8083e89 100644 --- a/hb_server/apps/em/models.py +++ b/hb_server/apps/em/models.py @@ -35,5 +35,5 @@ class Equipment(CommonBModel): verbose_name_plural = verbose_name def __str__(self): - return self.name + '-' + self.name + return self.number + '-' + self.name \ No newline at end of file diff --git a/hb_server/apps/monitor/views.py b/hb_server/apps/monitor/views.py index 3e6cee4..ffd85fe 100644 --- a/hb_server/apps/monitor/views.py +++ b/hb_server/apps/monitor/views.py @@ -1,5 +1,6 @@ from django.shortcuts import render import psutil +from rest_framework import response from rest_framework.response import Response from rest_framework.views import APIView from rest_framework.permissions import IsAuthenticated @@ -7,6 +8,8 @@ from rest_framework.viewsets import ViewSet from django.conf import settings import os from rest_framework import serializers, status +from drf_yasg import openapi +from drf_yasg.utils import swagger_auto_schema # Create your views here. class ServerInfoView(APIView): @@ -29,8 +32,23 @@ class ServerInfoView(APIView): ret['disk']['percent'] = disk.percent return Response(ret) +def get_file_list(file_path): + dir_list = os.listdir(file_path) + if not dir_list: + return + else: + # 注意,这里使用lambda表达式,将文件按照最后修改时间顺序升序排列 + # os.path.getmtime() 函数是获取文件最后修改时间 + # os.path.getctime() 函数是获取文件最后创建时间 + dir_list = sorted(dir_list,key=lambda x: os.path.getmtime(os.path.join(file_path, x)), reverse=True) + # print(dir_list) + return dir_list + class LogView(APIView): + @swagger_auto_schema(manual_parameters=[ + openapi.Parameter('name', openapi.IN_QUERY, description='日志文件名', type=openapi.TYPE_STRING) + ]) def get(self, request, *args, **kwargs): """ 查看最近的日志列表 @@ -38,20 +56,13 @@ class LogView(APIView): """ logs =[] name = request.GET.get('name', None) - for root, dirs, files in os.walk(settings.LOG_PATH): - for file in files: - if len(logs)>50:break - filepath = os.path.join(root, file) - if name: - if filepath.contains(name): - fsize = os.path.getsize(filepath) - if fsize: - logs.append({ - "name":file, - "filepath":filepath, - "size":round(fsize/1000,1) - }) - else: + # for root, dirs, files in os.walk(settings.LOG_PATH): + # files.reverse() + for file in get_file_list(settings.LOG_PATH): + if len(logs)>50:break + filepath = os.path.join(settings.LOG_PATH, file) + if name: + if name in filepath: fsize = os.path.getsize(filepath) if fsize: logs.append({ @@ -59,8 +70,17 @@ class LogView(APIView): "filepath":filepath, "size":round(fsize/1000,1) }) + else: + fsize = os.path.getsize(filepath) + if fsize: + logs.append({ + "name":file, + "filepath":filepath, + "size":round(fsize/1000,1) + }) return Response(logs) + class LogDetailView(APIView): def get(self, request, name):