mirror of
https://github.com/ngfchl/ptools
synced 2023-07-10 13:41:22 +08:00
优化日志查看,添加删除日志文件功能
This commit is contained in:
@@ -32,6 +32,7 @@ urlpatterns = [
|
||||
path(r'get_log_list', views.get_log_list, name='get_log_list'),
|
||||
path(r'show_log_list', views.show_log_list, name='show_log_list'),
|
||||
path(r'get_log_content', views.get_log_content, name='get_log_content'),
|
||||
path(r'remove_log_api', views.remove_log_api, name='remove_log_api'),
|
||||
path(r'get_helper_license', views.get_helper_license, name='get_helper_license'),
|
||||
path(r'downloading_status', views.downloading_status, name='downloading_status'),
|
||||
path(r'do_sql', views.do_sql, name='do_sql'),
|
||||
|
||||
@@ -934,12 +934,12 @@ def show_sign_api(request):
|
||||
|
||||
def get_log_list(request):
|
||||
path = os.path.join(BASE_DIR, 'db')
|
||||
logger.info(path)
|
||||
logger.info(os.listdir(path))
|
||||
|
||||
# logger.info(path)
|
||||
# logger.info(os.listdir(path))
|
||||
names = [name for name in os.listdir(path)
|
||||
if os.path.isfile(os.path.join(path, name)) and name.startswith('logs')]
|
||||
logger.info(names)
|
||||
names = sorted(names, key=lambda x: os.stat(os.path.join(BASE_DIR, f'db/{x}')).st_ctime, reverse=True)
|
||||
# logger.info(names)
|
||||
return JsonResponse(data=CommonResponse.success(
|
||||
data={
|
||||
'path': path,
|
||||
@@ -953,7 +953,7 @@ def get_log_content(request):
|
||||
path = os.path.join(BASE_DIR, 'db/' + name)
|
||||
with open(path, 'r') as f:
|
||||
logs = f.readlines()
|
||||
logger.info(logs)
|
||||
logger.info(f'日志行数:{len(logs)}')
|
||||
return JsonResponse(data=CommonResponse.success(
|
||||
data={
|
||||
'path': path,
|
||||
@@ -962,6 +962,21 @@ def get_log_content(request):
|
||||
).to_dict(), safe=False)
|
||||
|
||||
|
||||
def remove_log_api(request):
|
||||
name = request.GET.get('name')
|
||||
path = os.path.join(BASE_DIR, f'db/{name}')
|
||||
try:
|
||||
os.remove(path)
|
||||
return JsonResponse(data=CommonResponse.success(
|
||||
msg='删除成功!'
|
||||
).to_dict(), safe=False)
|
||||
except Exception as e:
|
||||
logger.error(traceback.format_exc(3))
|
||||
return JsonResponse(data=CommonResponse.error(
|
||||
msg='删除文件出错啦!详情请查看日志'
|
||||
).to_dict(), safe=False)
|
||||
|
||||
|
||||
def show_log_list(request):
|
||||
return render(request, 'auto_pt/showlog.html')
|
||||
|
||||
|
||||
@@ -189,7 +189,7 @@ LOGGING = {
|
||||
'filename': os.path.join(BASE_DIR, 'db/logs.log'),
|
||||
'when': 'm',
|
||||
'interval': 10,
|
||||
'backupCount': 30,
|
||||
'backupCount': 10,
|
||||
# 'class': 'logging.handlers.RotatingFileHandler',
|
||||
# 'filename': "db/{}.log".format(datetime.datetime.today()), # 日志文件的位置
|
||||
# 'maxBytes': 30 * 1024 * 1024, # 日志文件的大小(300*1024*1024为300MB)
|
||||
|
||||
@@ -33,11 +33,13 @@
|
||||
<div>
|
||||
<el-select placeholder="请选择要查看的日志"
|
||||
size="small"
|
||||
v-model="log" @change="showLog()">
|
||||
v-model="log" @change="showLog">
|
||||
<el-option
|
||||
v-for="(name,index) in names" :index="index" :label="name" :value="name">
|
||||
</el-option>
|
||||
</el-select>
|
||||
<el-button type="primary" @click="showLog" size="small">查看日志</el-button>
|
||||
<el-button type="danger" @click="removeLog" size="small">删除日志</el-button>
|
||||
</div>
|
||||
<el-container style="height: 780px; border: 1px solid #eee;margin-top: 5px;">
|
||||
<el-main class="logs">
|
||||
@@ -57,7 +59,7 @@
|
||||
data() {
|
||||
return {
|
||||
names: [],
|
||||
log: '',
|
||||
log: 'logs.log',
|
||||
logs: [],
|
||||
}
|
||||
},
|
||||
@@ -66,7 +68,11 @@
|
||||
},
|
||||
mounted() {
|
||||
{#this.chart = this.$refs.charts.chart#}
|
||||
this.getLogs()
|
||||
setTimeout(() => {
|
||||
this.getLogs()
|
||||
this.showLog()
|
||||
}, 50)
|
||||
|
||||
},
|
||||
methods: {
|
||||
getLogs() {
|
||||
@@ -100,10 +106,10 @@
|
||||
},
|
||||
showLog() {
|
||||
{#console.log(name)#}
|
||||
let name = this.log
|
||||
this.logs = []
|
||||
console.log(this.log)
|
||||
axios.get(
|
||||
"{% url 'get_log_content' %}" + '?name=' + name
|
||||
"{% url 'get_log_content' %}" + '?name=' + this.log
|
||||
).then(res => {
|
||||
console.log('获取数据列表成功', res.data)
|
||||
{#let data = res.data#}
|
||||
@@ -130,6 +136,39 @@
|
||||
});
|
||||
})
|
||||
},
|
||||
removeLog() {
|
||||
if (this.log == 'logs.log') {
|
||||
this.$message({
|
||||
type: 'warning',
|
||||
message: '当前日志正在使用中,请勿操作!'
|
||||
});
|
||||
return
|
||||
}
|
||||
console.log(this.log)
|
||||
axios.get(
|
||||
"{% url 'remove_log_api' %}" + '?name=' + this.log
|
||||
).then(res => {
|
||||
console.log('删除日志文件成功', res.data)
|
||||
{#let data = res.data#}
|
||||
{#console.log(typeof res.data.data)#}
|
||||
if (res.data.code === 0) {
|
||||
this.getLogs()
|
||||
this.showLog()
|
||||
} else {
|
||||
this.loading = false
|
||||
this.$message({
|
||||
type: 'warning',
|
||||
message: '删除日志文件失败!'
|
||||
});
|
||||
}
|
||||
}).catch(res => {
|
||||
console.log('删除日志文件失败', res)
|
||||
this.$message({
|
||||
type: 'warning',
|
||||
message: '删除日志文件失败!' + res
|
||||
});
|
||||
})
|
||||
},
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
Reference in New Issue
Block a user