在项目目录创建logs文件夹
# 控制台日志存放目录
CONSOLE_LOG = os.path.join(BASE_DIR, 'logs')
# 配置日志
LOGGING = {
'version': 1, # 指定版本,目前也就一个版本
'disable_existing_loggers': True, # 表示是否禁用所有的已经存在的日志配置
'formatters': {
# 日志格式
'standard': {
'format': '[%(asctime)s] [%(filename)s:%(lineno)d] [%(module)s:%(funcName)s] '
'[%(levelname)s]- %(message)s'},
'simple': {
# 简单格式
'format': '%(levelname)s %(message)s'
},
},
# 暂不使用过滤
'filters': {
},
# 定义具体处理日志的方式
# 用来定义具体处理日志的方式,可以定义多种
# "default"就是默认方式,"console"就是打印到控制台方式。file是写入到文件的方式,注意使用的class不同
'handlers': {
# 默认记录所有日志
'default': {
'level': 'INFO',
'class': 'logging.handlers.RotatingFileHandler',
'filename': CONSOLE_LOG + '/web.logs', # 日志的存放路径
'maxBytes': 1024 * 1024 * 5, # 文件大小
'backupCount': 5, # 备份数
'formatter': 'standard', # 输出格式
'encoding': 'utf-8', # 设置默认编码,否则打印出来汉字乱码
},
# 控制台输出
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'standard'
},
},
# 配置用哪几种 handlers 来处理日志
'loggers': {
# 类型 为 django 处理所有类型的日志, 默认调用
'django': {
'handlers': ['default', 'console'],
'level': 'INFO',
'propagate': False # 可以基于每个记录器控制该传播。 如果您不希望特定记录器传播到其父项,则可以关闭此行为。
},
}
}
总共有六个日志级别,当日志级别设置为WARNING时,则比它低的INFO、DEBUG、NOTSET将不会输出
解释:
CRITICAL 50 关键错误/消息,描述已经发生的严重问题
ERROR 40 错误,描述已经发生的主要问题
WARNING 30 警告消息,描述已经发生的小问题
INFO 20 通知消息,普通的系统信息列表内容
DEBUG 10 调试,出于调试目的的低层次系统信息
NOTSET 0 无级别
%(name)s 记录器的名称
%(levelno)s 数字形式的日志记录级别
%(levelname)s 日志记录级别的文本名称
%(filename)s 执行日志记录调用的源文件的文件名称
%(pathname)s 执行日志记录调用的源文件的路径名称
%(funcName)s 执行日志记录调用的函数名称
%(module)s 执行日志记录调用的模块名称
%(lineno)s 执行日志记录调用的行号
%(created)s 执行日志记录的时间
%(asctime)s 日期和时间
%(msecs)s 毫秒部分
%(thread)d 线程ID
%(threadName)s 线程名称
%(process)d 进程ID
%(message)s 记录的消息