在项目 settings.py 文件中增加如下配置
import os
LOGGING_DIR = '../logs' # 日志文件夹路径
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
# 日志格式
'formatters': {
'verbose': {
'format': '%(levelname)s [%(asctime)s] %(pathname)s %(lineno)d %(funcName)s \n \t %(message)s \n',
'datefmt': '%Y-%m-%d %H:%M:%S'
},
'simple': {
'format': '%(levelname)s %(funcName)s %(message)s'
},
'db': {
'format': '%(levelname)s [%(asctime)s] %(lineno)d %(funcName)s %(process)d %(thread)d \n \t %(message)s \n',
'datefmt': '%Y-%m-%d %H:%M:%S'
},
'task': {
'format': '%(levelname)s [%(asctime)s] %(pathname)s %(lineno)d %(funcName)s %(process)d %(thread)d \n \t %(message)s \n',
'datefmt': '%Y-%m-%d %H:%M:%S'
},
},
# 日志输出方式;共3种, logging.StreamHandler终端输出, logging.handlers.TimedRotatingFileHandler 时间格式文件记录(分割), logging.handlers.RotatingFileHandler 文件大小格式记录(分割)
'handlers': {
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'simple'
},
'debug': {
'level': 'DEBUG',
'class': 'logging.handlers.TimedRotatingFileHandler',
'formatter': 'verbose',
'filename': os.path.join(LOGGING_DIR, 'debug.log'),
'when': 'midnight', # 按天分割日志文件
'backupCount': 7
},
'django_run': {
'level': 'INFO',
'class': 'logging.handlers.TimedRotatingFileHandler',
'formatter': 'verbose',
'filename': os.path.join(LOGGING_DIR, 'django_run.log'),
'when': 'midnight',
'backupCount': 7
},
'task': {
'level': 'INFO',
'class': 'logging.handlers.TimedRotatingFileHandler',
'formatter': 'verbose',
'filename': os.path.join(LOGGING_DIR, 'django_task.log'),
'when': 'midnight',
'backupCount': 7
},
'run_error': {
'level': 'ERROR',
'class': 'logging.handlers.TimedRotatingFileHandler',
'formatter': 'verbose',
'filename': os.path.join(LOGGING_DIR, 'django_error.log'),
'when': 'midnight',
'backupCount': 7
},
'db': {
'level': 'ERROR',
'class': 'logging.handlers.RotatingFileHandler',
'formatter': 'db',
'filename': os.path.join(LOGGING_DIR, 'django_db.log'),
'maxBytes': 1024 * 1024, # 1M大小分割
'backupCount': 30
}
},
'loggers': {
'django': {
'handlers': ['console', 'django_run'],
'level': 'INFO',
'propagate': True
},
'django.request': {
'handlers': ['console', 'run_error'],
'level': 'INFO',
'propagate': True
},
'log': {
'handlers': ['console','debug','run_error','django_run'],
'level': 'INFO',
'propagate': True
},
'celery': {
'handlers': ['task'],
'level': "DEBUG",
'propagete': True
},
'django.db': {
'handlers': ['db'],
'level': 'INFO',
'propagete': True
}
}
}
在模块中使用
from logging import getLogger
logger = getLogger('log')
logger.info('---test---')