Django日志默认是保存在内存中的,如果需要保存到文件中,则需要进行配置。保存时间的设置可以通过日志处理器(handler)来实现。
具体步骤如下:
-
在settings.py中添加日志配置:
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'file': {
'level': 'DEBUG',
'class': 'logging.FileHandler',
'filename': '/path/to/file.log', # 日志文件路径
'formatter': 'verbose',
'when': 'midnight', # 设置保存时间为每天零点
'backupCount': 7, # 保留7天的日志文件
},
},
'loggers': {
'django': {
'handlers': ['file'],
'level': 'DEBUG',
'propagate': True,
},
},
}
-
在视图函数或其他代码中添加日志记录:
import logging
logger = logging.getLogger(__name__)
def my_view(request):
logger.debug('This is a debug message')
logger.info('This is an info message')
logger.warning('This is a warning message')
logger.error('This is an error message')
logger.critical('This is a critical message')
这样,当视图函数被调用时,日志信息将被记录到指定的日志文件中,并且每天零点会自动创建新的日志文件,同时保留7天的历史日志文件。
logging还有一个formatters属性,用于指定日志格式。可以在LOGGING配置中添加formatters属性,例如:
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'file': {
'level': 'DEBUG',
'class': 'logging.FileHandler',
'filename': '/path/to/file.log',
'formatter': 'verbose', # 指定日志格式
'when': 'midnight',
'backupCount': 7,
},
},
'loggers': {
'django': {
'handlers': ['file'],
'level': 'DEBUG',
'propagate': True,
},
},
'formatters': {
'verbose': {
'format': '%(asctime)s %(levelname)s %(module)s %(process)d %(thread)d %(message)s'
},
},
}
在上面的配置中,我们指定了formatter为verbose,并在formatters中定义了verbose格式的具体内容。%(asctime)s表示记录时间,%(levelname)s表示日志级别,%(module)s表示模块名,%(process)d表示进程ID,%(thread)d表示线程ID,%(message)s表示日志信息。
在视图函数或其他代码中,我们可以使用logger.debug()、logger.info()等方法记录日志,日志信息将按照指定的格式记录到日志文件中。