之前的都是在测试环境中的,没有加日志,现在想把日志给加上。
用个简单的,能跑通即可。
就参考了Django文档中的内容。
https://docs.djangoproject.com/zh-hans/3.0/topics/logging/
# 在setting.py文件中输入如下代码
# logging日志配置
import os
LOG_DIR = os.path.join(BASE_DIR, 'logs')
if not os.path.exists(LOG_DIR):
os.makedirs(LOG_DIR)
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'file': {
'level': 'DEBUG',
'class': 'logging.FileHandler',
'filename': os.path.join(LOG_DIR, 'debug.log'),
},
},
'loggers': {
'django': {
'handlers': ['file'],
'level': 'DEBUG',
'propagate': True,
},
},
}
稍复杂些的,记录多项log。
注意,Logger里面的 handlers 都要有上面对应的项,我之前把两个参考合并至一起,报错,一直找不到,原来就是没有那项。
参考:https://blog.csdn.net/zhouzhiwengang/article/details/119606262
import os
# logging日志配置
LOG_DIR = os.path.join(BASE_DIR, 'logs')
if not os.path.exists(LOG_DIR):
os.makedirs(LOG_DIR)
LOGGING = {
'version': 1,
'disable_existing_loggers': False, # 表示是否禁用所有的已存在的日志配置
'formatters': { # 日志格式
'default': {
'format': '%(asctime)s %(name)s %(pathname)s:%(lineno)d %(module)s:%(funcName)s %(levelname)s- %(message)s',
'datefmt': '%Y-%m-%d %H:%M:%S'},
'simple': {
'format': '{levelname} {message}',
'style': '{',
},
},
'filters': { # 过滤器
'require_debug_false': {
'()': 'django.utils.log.RequireDebugFalse',
}
},
'handlers': { # 处理器
# 'mail_admins': { # 发送邮件通知管理员
# 'level': 'ERROR',
# 'class': 'django.utils.log.AdminEmailHandler',
# 'filters': ['require_debug_false'], # 仅当 DEBUG = False 时才发送邮件
# 'include_html': True,
# },
'debug': { # 记录到日志文件(需要创建对应的目录,否则会出错)
'level': 'DEBUG',
'class': 'logging.handlers.RotatingFileHandler',
'filename': os.path.join(LOG_DIR, 'debug.log'), # 日志输出文件
'maxBytes': 1024 * 1024 * 5, # 文件大小
'backupCount': 5, # 备份份数
'formatter': 'default', # 使用哪种formatters日志格式
},
'console': { # 输出到控制台
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'default',
},
'file': { # 输出到文件
'level': 'DEBUG',
'class': 'logging.handlers.TimedRotatingFileHandler',
'filename': os.path.join(LOG_DIR, 'debug.log'),
'when': 'D',
'interval': 1,
'formatter': 'default',
},
'request': { #
'level': 'DEBUG',
'class': 'logging.FileHandler',
'filename': os.path.join(LOG_DIR, 'request.log'),
'formatter': 'default',
},
'server': { #
'level': 'DEBUG',
'class': 'logging.FileHandler',
'filename': os.path.join(LOG_DIR, 'server.log'),
'formatter': 'default',
},
'root': { #
'level': 'DEBUG',
'class': 'logging.FileHandler',
'filename': os.path.join(LOG_DIR, 'root.log'),
'formatter': 'default',
},
'db_backends': { #
'level': 'DEBUG',
'class': 'logging.FileHandler',
'filename': os.path.join(LOG_DIR, 'db_backends.log'),
'formatter': 'default',
},
'autoreload': { #
'level': 'INFO',
'class': 'logging.FileHandler',
'filename': os.path.join(LOG_DIR, 'autoreload.log'),
'formatter': 'default',
},
},
'loggers': { # logging管理器
'mylogger': {
'handlers': ['console', 'file'],
'level': 'DEBUG',
'propagate': True,
},
'django': {
'handlers': ['console', 'file'],
'level': 'DEBUG',
'propagate': False
},
'django.request': {
'handlers': ['request'],
'level': 'ERROR',
'propagate': False,
},
'django.server': {
'handlers': ['server'],
'level': 'DEBUG',
'propagate': False
},
'django.db.backends': {
'handlers': ['db_backends'],
'level': 'DEBUG',
'propagate': False
},
'django.utils.autoreload': {
'handlers': ['autoreload'],
'level': 'INFO',
'propagate': False
},
# 对于不在 ALLOWED_HOSTS 中的请求不发送报错邮件
'django.security.DisallowedHost': {
'handlers': ['root'],
'propagate': False,
},
},
'root':{
'level':'DEBUG',
'handlers': ['root'],
},
}
网友评论