settings添加日志工具
This commit is contained in:
parent
992d19f0cb
commit
a56f02ef01
|
@ -1,8 +1,12 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
"""
|
||||||
|
@Time : 2025/8/15 19:29
|
||||||
|
@Auth : 九月的海
|
||||||
|
@IDE : PyCharm
|
||||||
|
@Motto : Catch as catch can....
|
||||||
|
"""
|
||||||
from chuangliangTool.db_base import Bd_task_db, Async_create_ad_batch_db
|
from chuangliangTool.db_base import Bd_task_db, Async_create_ad_batch_db
|
||||||
from typing import List, Dict, Any, Optional
|
from typing import List, Dict, Any, Optional
|
||||||
import json
|
|
||||||
import html
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
@ -93,8 +97,6 @@ class AsyncTaskDataQuery:
|
||||||
"result_data": row[3]
|
"result_data": row[3]
|
||||||
}
|
}
|
||||||
task_logs.append(task_log)
|
task_logs.append(task_log)
|
||||||
|
|
||||||
print(f"找到 {len(task_logs)} 条任务日志记录")
|
|
||||||
return task_logs
|
return task_logs
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
|
|
@ -1,13 +1,20 @@
|
||||||
from django.http import JsonResponse
|
# -*- coding: utf-8 -*-
|
||||||
from django.views.decorators.http import require_GET
|
"""
|
||||||
from django.utils import timezone # 使用 Django 的时区支持
|
@Time : 2025/8/15 19:29
|
||||||
import json
|
@Auth : 九月的海
|
||||||
|
@File : views.py
|
||||||
|
@IDE : PyCharm
|
||||||
|
@Motto : Catch as catch can....
|
||||||
|
"""
|
||||||
from chuangliangBaidu.migrations.BaidutaskQuery import AsyncTaskDataQuery
|
from chuangliangBaidu.migrations.BaidutaskQuery import AsyncTaskDataQuery
|
||||||
from django.http import JsonResponse
|
from django.http import JsonResponse
|
||||||
from django.views.decorators.http import require_GET
|
from django.views.decorators.http import require_GET
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from django.shortcuts import render
|
from django.shortcuts import render
|
||||||
import json
|
import json
|
||||||
|
import logging
|
||||||
|
|
||||||
|
logger = logging.getLogger('chuangliang')
|
||||||
|
|
||||||
|
|
||||||
def get_task_details(request):
|
def get_task_details(request):
|
||||||
|
@ -29,10 +36,12 @@ def get_task_details(request):
|
||||||
"method": request.method
|
"method": request.method
|
||||||
}
|
}
|
||||||
if is_browser_request:
|
if is_browser_request:
|
||||||
|
logger.error(error_data)
|
||||||
return render(request, 'json_formatter3.html', {
|
return render(request, 'json_formatter3.html', {
|
||||||
"json_data": json.dumps(error_data, ensure_ascii=False),
|
"json_data": json.dumps(error_data, ensure_ascii=False),
|
||||||
"status": 400
|
"status": 400
|
||||||
})
|
})
|
||||||
|
logger.error(error_data)
|
||||||
return JsonResponse(error_data, status=400, json_dumps_params={'ensure_ascii': False})
|
return JsonResponse(error_data, status=400, json_dumps_params={'ensure_ascii': False})
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
@ -46,14 +55,17 @@ def get_task_details(request):
|
||||||
"provided_value": task_id
|
"provided_value": task_id
|
||||||
}
|
}
|
||||||
if is_browser_request:
|
if is_browser_request:
|
||||||
|
logger.error(error_data)
|
||||||
return render(request, 'json_formatter3.html', {
|
return render(request, 'json_formatter3.html', {
|
||||||
"json_data": json.dumps(error_data, ensure_ascii=False),
|
"json_data": json.dumps(error_data, ensure_ascii=False),
|
||||||
"status": 400
|
"status": 400
|
||||||
})
|
})
|
||||||
|
logger.error(error_data)
|
||||||
return JsonResponse(error_data, status=400, json_dumps_params={'ensure_ascii': False})
|
return JsonResponse(error_data, status=400, json_dumps_params={'ensure_ascii': False})
|
||||||
|
|
||||||
# 创建查询实例并获取数据
|
# 创建查询实例并获取数据
|
||||||
try:
|
try:
|
||||||
|
logger.info(f'查询的任务ID: {task_id}')
|
||||||
task_query = AsyncTaskDataQuery(task_id)
|
task_query = AsyncTaskDataQuery(task_id)
|
||||||
result = task_query.get_task_details()
|
result = task_query.get_task_details()
|
||||||
# 处理任务日志并解码中文
|
# 处理任务日志并解码中文
|
||||||
|
@ -86,14 +98,15 @@ def get_task_details(request):
|
||||||
|
|
||||||
# 如果是浏览器请求,返回HTML视图
|
# 如果是浏览器请求,返回HTML视图
|
||||||
if is_browser_request:
|
if is_browser_request:
|
||||||
|
logger.info(response_data)
|
||||||
return render(request, 'json_formatter3.html', {
|
return render(request, 'json_formatter3.html', {
|
||||||
"json_data": response_data,
|
# "json_data": response_data,
|
||||||
# "json_data": json.dumps(response_data, ensure_ascii=False, indent=2),
|
"json_data": json.dumps(response_data, ensure_ascii=False, indent=2),
|
||||||
"status": 200,
|
"status": 200,
|
||||||
"task_id": task_id
|
"task_id": task_id
|
||||||
})
|
})
|
||||||
|
|
||||||
# 返回JSON响应
|
logger.info(response_data)
|
||||||
return JsonResponse(
|
return JsonResponse(
|
||||||
response_data,
|
response_data,
|
||||||
json_dumps_params={'ensure_ascii': False}
|
json_dumps_params={'ensure_ascii': False}
|
||||||
|
@ -107,10 +120,11 @@ def get_task_details(request):
|
||||||
"time": current_time,
|
"time": current_time,
|
||||||
"task_id": task_id
|
"task_id": task_id
|
||||||
}
|
}
|
||||||
print(e)
|
|
||||||
if is_browser_request:
|
if is_browser_request:
|
||||||
|
logger.error(error_data)
|
||||||
return render(request, 'json_formatter3.html', {
|
return render(request, 'json_formatter3.html', {
|
||||||
"json_data": json.dumps(error_data, ensure_ascii=False),
|
"json_data": json.dumps(error_data, ensure_ascii=False),
|
||||||
"status": 500
|
"status": 500
|
||||||
})
|
})
|
||||||
|
logger.error(error_data)
|
||||||
return JsonResponse(error_data, status=500, json_dumps_params={'ensure_ascii': False})
|
return JsonResponse(error_data, status=500, json_dumps_params={'ensure_ascii': False})
|
||||||
|
|
|
@ -122,3 +122,56 @@ STATIC_URL = 'static/'
|
||||||
# https://docs.djangoproject.com/en/5.2/ref/settings/#default-auto-field
|
# https://docs.djangoproject.com/en/5.2/ref/settings/#default-auto-field
|
||||||
|
|
||||||
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
|
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
|
||||||
|
|
||||||
|
LOGGING = {
|
||||||
|
'version': 1,
|
||||||
|
'disable_existing_loggers': False, # 保留Django默认日志器(如django.server)
|
||||||
|
'formatters': {
|
||||||
|
# 定义日志格式(可根据需求调整)
|
||||||
|
'verbose': {
|
||||||
|
'format': '{levelname} {asctime} {module} {process:d} {thread:d} {message}',
|
||||||
|
'style': '{',
|
||||||
|
},
|
||||||
|
'simple': {
|
||||||
|
'format': '{levelname} {message}',
|
||||||
|
'style': '{',
|
||||||
|
},
|
||||||
|
'custom': {
|
||||||
|
# 推荐:包含接口/业务关键信息(如请求路径、用户ID等)
|
||||||
|
'format': '{asctime} - {levelname} - {module} - {message}',
|
||||||
|
'style': '{',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'handlers': {
|
||||||
|
# 控制台处理器(开发环境推荐)
|
||||||
|
'console': {
|
||||||
|
'level': 'DEBUG', # 控制台输出DEBUG及以上级别
|
||||||
|
'class': 'logging.StreamHandler',
|
||||||
|
'formatter': 'custom', # 使用上面定义的custom格式
|
||||||
|
},
|
||||||
|
# 文件处理器(生产环境推荐,开发环境可选)
|
||||||
|
'file': {
|
||||||
|
'level': 'INFO', # 文件记录INFO及以上级别(避免DEBUG日志过多)
|
||||||
|
'class': 'logging.handlers.RotatingFileHandler',
|
||||||
|
'filename': BASE_DIR / 'logs' / 'chuangliang.log', # 日志文件路径
|
||||||
|
'maxBytes': 1024 * 1024 * 10, # 单个文件最大10MB
|
||||||
|
'backupCount': 10, # 保留10个旧日志文件
|
||||||
|
'formatter': 'custom', # 使用custom格式
|
||||||
|
'encoding': 'utf-8', # 避免中文乱码
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'loggers': {
|
||||||
|
# 配置Django内置日志器(如访问日志)
|
||||||
|
'django.server': {
|
||||||
|
'handlers': ['console'], # 开发环境输出到控制台
|
||||||
|
'level': 'INFO', # 记录INFO及以上级别(Django默认访问日志是INFO)
|
||||||
|
'propagate': False, # 不传播到根日志器
|
||||||
|
},
|
||||||
|
# 配置您自定义的业务日志器(关键!)
|
||||||
|
'chuangliang': { # (如Logger类中的self._logger = logging.getLogger("chuangliang"))
|
||||||
|
'handlers': ['console', 'file'], # 同时输出到控制台和文件
|
||||||
|
'level': 'DEBUG', # 开发环境记录所有DEBUG及以上日志
|
||||||
|
'propagate': False, # 不传播到根日志器(避免与其他日志器冲突)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
Loading…
Reference in New Issue