日志使用的流程:
1.先要在settings.py 中加入日志的配置
LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'formatters': { 'standard': { 'format': '[%(levelname)s][%(asctime)s][%(filename)s][%(funcName)s][%(lineno)d] > %(message)s' }, 'simple': { 'format': '[%(levelname)s]> %(message)s' }, }, 'filters': { 'require_debug_true': { '()': 'django.utils.log.RequireDebugTrue', }, }, 'handlers': { 'default': { 'level': 'DEBUG', # 日志级别 'class': 'logging.handlers.RotatingFileHandler', # 输出到文件 'filename': os.path.join(LOGS_DIR, 'django.log'), # 日志文件,请确保修改'filename'路径为运行Django应用的用户有权限写入的一个位置 'maxBytes': 1024 * 1024 * 5, # 5 MB 文件大小 'backupCount': 60, # 备份份数 'formatter': 'standard', # 使用哪种日志格式 }, 'console': { 'level': 'DEBUG', 'filters': ['require_debug_true'], 'class': 'logging.StreamHandler', # 输出到控制台,这个类指定的不同输出方式不一样,下边是这个地方指定的类所需要的参数 'formatter': 'simple' }, 'file': { 'level': 'DEBUG', 'class': 'logging.handlers.TimedRotatingFileHandler', # TimedRotatingFileHandler的参数, 其他博客上说这个类可以按照日期分割日志,但是我没试出来 # 参照https://docs.python.org/3/library/logging.handlers.html#timedrotatingfilehandler # 目前设定每天一个日志文件 'filename': os.path.join(LOGS_DIR, 'django.log'), 'when': 'midnight', 'interval': 1, 'backupCount': 60, 'formatter': 'standard' }, # 'file_handler': { # 'level': 'INFO', # 'class': 'logging.handlers.TimedRotatingFileHandler', # 'filename': os.path.join(LOGS_DIR, 'django.log'), # 'formatter': 'standard' # }, # 用于文件输出 }, 'loggers': { 'django.debug': { 'handlers': ['default', 'console'], 'level': 'DEBUG', 'propagate': True, }, 'django.everyday': { 'handlers': ['file', 'console'], 'level': 'DEBUG', 'propagate': True, }, # 'django.request': { # 'handlers': ['mail_admins'], # 'level': 'ERROR', # 'propagate': False, # }, } }
2.去视图中实例化一个日志记录的对象
logger = logging.getLogger("django.everyday")
实例化时传入的参数应该是配置文件内loggers容器内声明好的容器
3.实例化对象后在需要输出日志的地方写上输出语句
logger.info(msg) logger.error(e)
logger有不同的信息,调用不同方法写入不同的类型的信息
一般info是正常信息,warning是警告信息,error是错误信息,常用的就这些