Django日志配置
在配置文件配置日志
LOGGING = {
'version': 1,
'disable_existing_loggers': False, # 是否禁用已经存在的日志模块
'handlers': {
'file': { # 定义日志文件记录
#优先级: DEBUG、INFO、WARNING、ERROR、CRITICAL
'level': 'DEBUG', #
# 'class': 'logging.FileHandler', # 普通的日志记录类,不实用
'class': 'logging.handlers.TimedRotatingFileHandler', # 原本的按时间分割的日志记录类
'filename': './err.log', # 定义日志文件目录,logs文件夹没有就创建,err.log自动生成
'formatter': 'verbose',
'encoding': 'utf-8'
},
'console': { # 定义终端打印记录
'level': 'DEBUG', # 打印所有信息
'class': 'logging.StreamHandler',
'formatter': 'verbose',
},
},
'formatters': {
'verbose': { # 定义详细的日志信息
'format': '{levelname} {asctime} {module} {process:d} {thread:d} {message}',
'style': '{',
},
},
'loggers': {
'django': { # 使用django日志,指定使用上述定义的各个配置
'handlers': ['file', 'console'], # 同时记录到日志文件和在终端打印
'level': 'ERROR', #只打印错误日志
'propagate': True, # 是否向上传播
'formatter': 'verbose'
},
'app': { # 新增的 'app' 日志记录器配置
'handlers': ['file','console'], # 仅将日志输出到控制台
'level': 'INFO', # 设置日志级别为 DEBUG
'propagate': False, # 防止日志消息被根记录器或其他记录器重复处理
'formatter': 'verbose' },
'root': {
'handlers': [], # 默认情况下,根记录器不处理任何日志
'level': 'WARNING', # 如果需要,可以调整根记录器的日志级别
},
},
}
在需要打日志的地方
import logging
logging.config.dictConfig(LOGGING)
# 示例:使用配置的日志记录器
logger = logging.getLogger('app')
logger.info('这是一个info级别的日志')
最终实现,手动打日志 和 系统 error 级别报错 进文件 和 在终端展示
其中遇到了logging没有config方法的问题参考下面解决(as 给个别名)
https://blog.csdn.net/lichenliang666/article/details/124804626
参考了: https://www.cnblogs.com/banbosuiyue/articles/15030761.html
后记:
如何只需要打印出来的日志一直往一个文件打印 ,不按日期生成日志
如果你想要设置Django的日志配置,使得日志文件不会按日期分割(即不使用TimedRotatingFileHandler),而是简单地写入一个固定的文件中,你需要将class的值从'logging.handlers.TimedRotatingFileHandler'更改为'logging.FileHandler'。以下是修改后的LOGGING配置示例: