fix: Windows syslog兼容 + API设计文档
This commit is contained in:
@@ -198,79 +198,91 @@ FILE_UPLOAD_MAX_MEMORY_SIZE = 524288000
|
||||
CELERY_BROKER_URL = 'redis://:xjjq1234!@localhost:6379/0'
|
||||
CELERY_RESULT_BACKEND = 'redis://:xjjq1234!@localhost:6379/0'
|
||||
|
||||
import sys
|
||||
|
||||
_is_linux = sys.platform == 'linux'
|
||||
|
||||
_syslog_handler = {
|
||||
'level': 'WARNING',
|
||||
'class': 'logging.handlers.SysLogHandler',
|
||||
'address': '/dev/log',
|
||||
'facility': 'local0',
|
||||
'formatter': 'syslog',
|
||||
} if _is_linux else {
|
||||
'level': 'WARNING',
|
||||
'class': 'logging.handlers.RotatingFileHandler',
|
||||
'filename': str(LOG_DIR / 'syslog.log'),
|
||||
'maxBytes': 1024 * 1024 * 50,
|
||||
'backupCount': 5,
|
||||
'formatter': 'standard',
|
||||
'encoding': 'utf-8',
|
||||
}
|
||||
|
||||
LOGGING = {
|
||||
'version': 1,
|
||||
'disable_existing_loggers': False, # 不关闭已存在的日志器
|
||||
'disable_existing_loggers': False,
|
||||
'formatters': {
|
||||
'standard': { # 统一的标准日志格式
|
||||
'standard': {
|
||||
'format': '[%(asctime)s] [%(levelname)s] [%(process)d] [%(module)s] %(message)s',
|
||||
'datefmt': '%Y-%m-%d %H:%M:%S'
|
||||
},
|
||||
'syslog': { # syslog格式(用于fail2ban检测)
|
||||
'syslog': {
|
||||
'format': '%(name)s: %(levelname)s %(message)s'
|
||||
},
|
||||
},
|
||||
'handlers': {
|
||||
'file': { # 日志写入文件的处理器
|
||||
'level': 'INFO', # 日志级别:INFO及以上都记录(ERROR/WARNING/INFO)
|
||||
'class': 'logging.handlers.RotatingFileHandler', # 日志轮转,防止文件过大
|
||||
# ✅ 核心:pathlib对象转字符串,logging只接收字符串路径,必转!
|
||||
'file': {
|
||||
'level': 'INFO',
|
||||
'class': 'logging.handlers.RotatingFileHandler',
|
||||
'filename': str(LOG_DIR / 'all_in_one.log'),
|
||||
'maxBytes': 1024 * 1024 * 100, # 单个日志文件最大100MB
|
||||
'backupCount': 10, # 最多保留10个日志备份
|
||||
'formatter': 'standard', # 使用上面定义的统一格式
|
||||
'encoding': 'utf-8', # 编码,防止中文乱码
|
||||
'maxBytes': 1024 * 1024 * 100,
|
||||
'backupCount': 10,
|
||||
'formatter': 'standard',
|
||||
'encoding': 'utf-8',
|
||||
},
|
||||
'console': { # 兼容控制台输出(开发调试用,不影响生产)
|
||||
'console': {
|
||||
'level': 'INFO',
|
||||
'class': 'logging.StreamHandler',
|
||||
'formatter': 'standard'
|
||||
},
|
||||
'syslog': { # syslog处理器(用于fail2ban检测登录失败)
|
||||
'level': 'WARNING',
|
||||
'class': 'logging.handlers.SysLogHandler',
|
||||
'address': '/dev/log', # Linux系统日志socket
|
||||
'facility': 'local0',
|
||||
'formatter': 'syslog',
|
||||
},
|
||||
'auth_file': { # 认证日志文件处理器(备选方案)
|
||||
'syslog': _syslog_handler,
|
||||
'auth_file': {
|
||||
'level': 'WARNING',
|
||||
'class': 'logging.handlers.RotatingFileHandler',
|
||||
'filename': str(LOG_DIR / 'auth.log'),
|
||||
'maxBytes': 1024 * 1024 * 50, # 50MB
|
||||
'maxBytes': 1024 * 1024 * 50,
|
||||
'backupCount': 5,
|
||||
'formatter': 'standard',
|
||||
'encoding': 'utf-8',
|
||||
},
|
||||
},
|
||||
# 所有日志器配置和原配置完全一致,无需任何修改
|
||||
'loggers': {
|
||||
'django': { # Django核心日志
|
||||
'django': {
|
||||
'handlers': ['file'],
|
||||
'level': 'INFO',
|
||||
'propagate': True,
|
||||
},
|
||||
'django.request': { # Django的请求日志
|
||||
'django.request': {
|
||||
'handlers': ['file'],
|
||||
'level': 'INFO',
|
||||
'propagate': True,
|
||||
},
|
||||
'django.security.login': { # 登录安全日志(用于fail2ban)
|
||||
'django.security.login': {
|
||||
'handlers': ['syslog', 'auth_file'],
|
||||
'level': 'WARNING',
|
||||
'propagate': False,
|
||||
},
|
||||
'celery': { # Celery客户端日志(Django中提交任务的日志)
|
||||
'celery': {
|
||||
'handlers': ['file'],
|
||||
'level': 'INFO',
|
||||
'propagate': True,
|
||||
},
|
||||
'utils.tasks': { # Celery邮件任务模块
|
||||
'utils.tasks': {
|
||||
'handlers': ['file'],
|
||||
'level': 'INFO',
|
||||
'propagate': True,
|
||||
},
|
||||
'utils.email_utils': { # 邮件配置模块
|
||||
'utils.email_utils': {
|
||||
'handlers': ['file'],
|
||||
'level': 'INFO',
|
||||
'propagate': True,
|
||||
|
||||
Reference in New Issue
Block a user