ai_admin/WebAdmin/utils.py
2024-09-20 04:29:09 +00:00

68 lines
2.1 KiB
Python
Executable File

import logging
from logging.handlers import TimedRotatingFileHandler
import re
import pytz
from datetime import datetime
def get_logger(logger_name, log_file, when='midnight', backup_count=7):
"""
配置日志记录器并返回
:param logger_name: 日志记录器名称
:param log_file: 日志文件路径
:param when: 日志滚动的时间间隔(默认:'midnight',即每天午夜滚动)
:param backup_count: 保留的日志文件备份数量
:return: 配置好的日志记录器
"""
logger = logging.getLogger(logger_name)
logger.setLevel(logging.INFO)
# 创建文件处理器,用于写入日志文件
handler = TimedRotatingFileHandler(log_file, when=when, backupCount=backup_count)
handler.setLevel(logging.INFO)
# 创建日志格式化器
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
# 将处理器添加到记录器中
if not logger.hasHandlers():
logger.addHandler(handler)
return logger
def get_client_ip(request):
"""获取客户端真实 IP 地址"""
x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
if x_forwarded_for:
ip_list = x_forwarded_for.split(',')
ip = ip_list[0]
else:
ip = request.META.get('REMOTE_ADDR', '')
return ip
def get_browser_language(request):
"""获取浏览器语言"""
return request.META.get('HTTP_ACCEPT_LANGUAGE', '')
def get_referrer(request):
"""获取来源 URL"""
return request.META.get('HTTP_REFERER', '直接访问')
def get_user_agent(request):
"""获取用户代理字符串"""
return request.META.get('HTTP_USER_AGENT', '')
def get_device_type(user_agent):
"""根据用户代理判断设备类型(手机或电脑)"""
mobile_patterns = ['Mobile', 'Android', 'iPhone', 'iPad', 'Windows Phone']
for pattern in mobile_patterns:
if re.search(pattern, user_agent, re.IGNORECASE):
return 'Mobile'
return 'Desktop'
def get_beijing_time(utc_time):
return datetime.now()