settings添加日志工具 #2
|
@ -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 typing import List, Dict, Any, Optional
|
||||
import json
|
||||
import html
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
|
@ -93,8 +97,6 @@ class AsyncTaskDataQuery:
|
|||
"result_data": row[3]
|
||||
}
|
||||
task_logs.append(task_log)
|
||||
|
||||
print(f"找到 {len(task_logs)} 条任务日志记录")
|
||||
return task_logs
|
||||
|
||||
except Exception as e:
|
||||
|
|
|
@ -1,13 +1,20 @@
|
|||
from django.http import JsonResponse
|
||||
from django.views.decorators.http import require_GET
|
||||
from django.utils import timezone # 使用 Django 的时区支持
|
||||
import json
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
@Time : 2025/8/15 19:29
|
||||
@Auth : 九月的海
|
||||
@File : views.py
|
||||
@IDE : PyCharm
|
||||
@Motto : Catch as catch can....
|
||||
"""
|
||||
from chuangliangBaidu.migrations.BaidutaskQuery import AsyncTaskDataQuery
|
||||
from django.http import JsonResponse
|
||||
from django.views.decorators.http import require_GET
|
||||
from django.utils import timezone
|
||||
from django.shortcuts import render
|
||||
import json
|
||||
import logging
|
||||
|
||||
logger = logging.getLogger('chuangliang')
|
||||
|
||||
|
||||
def get_task_details(request):
|
||||
|
@ -29,10 +36,12 @@ def get_task_details(request):
|
|||
"method": request.method
|
||||
}
|
||||
if is_browser_request:
|
||||
logger.error(error_data)
|
||||
return render(request, 'json_formatter3.html', {
|
||||
"json_data": json.dumps(error_data, ensure_ascii=False),
|
||||
"status": 400
|
||||
})
|
||||
logger.error(error_data)
|
||||
return JsonResponse(error_data, status=400, json_dumps_params={'ensure_ascii': False})
|
||||
|
||||
try:
|
||||
|
@ -46,14 +55,17 @@ def get_task_details(request):
|
|||
"provided_value": task_id
|
||||
}
|
||||
if is_browser_request:
|
||||
logger.error(error_data)
|
||||
return render(request, 'json_formatter3.html', {
|
||||
"json_data": json.dumps(error_data, ensure_ascii=False),
|
||||
"status": 400
|
||||
})
|
||||
logger.error(error_data)
|
||||
return JsonResponse(error_data, status=400, json_dumps_params={'ensure_ascii': False})
|
||||
|
||||
# 创建查询实例并获取数据
|
||||
try:
|
||||
logger.info(f'查询的任务ID: {task_id}')
|
||||
task_query = AsyncTaskDataQuery(task_id)
|
||||
result = task_query.get_task_details()
|
||||
# 处理任务日志并解码中文
|
||||
|
@ -86,14 +98,15 @@ def get_task_details(request):
|
|||
|
||||
# 如果是浏览器请求,返回HTML视图
|
||||
if is_browser_request:
|
||||
logger.info(response_data)
|
||||
return render(request, 'json_formatter3.html', {
|
||||
"json_data": response_data,
|
||||
# "json_data": json.dumps(response_data, ensure_ascii=False, indent=2),
|
||||
# "json_data": response_data,
|
||||
"json_data": json.dumps(response_data, ensure_ascii=False, indent=2),
|
||||
"status": 200,
|
||||
"task_id": task_id
|
||||
})
|
||||
|
||||
# 返回JSON响应
|
||||
logger.info(response_data)
|
||||
return JsonResponse(
|
||||
response_data,
|
||||
json_dumps_params={'ensure_ascii': False}
|
||||
|
@ -107,10 +120,11 @@ def get_task_details(request):
|
|||
"time": current_time,
|
||||
"task_id": task_id
|
||||
}
|
||||
print(e)
|
||||
if is_browser_request:
|
||||
logger.error(error_data)
|
||||
return render(request, 'json_formatter3.html', {
|
||||
"json_data": json.dumps(error_data, ensure_ascii=False),
|
||||
"status": 500
|
||||
})
|
||||
logger.error(error_data)
|
||||
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
|
||||
|
||||
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