我需要将django 日志按日期分类按级别输出到指定文件同时控制台输出DEBUG日志
时间: 2023-05-22 14:03:36 浏览: 75
你可以通过配置logging模块来实现这个功能。可以使用TimedRotatingFileHandler来按日期切割日志文件,FileHandler来控制将日志输出到指定文件,StreamHandler来控制将日志输出到控制台。最后,在django配置文件中,添加logging配置即可。以下是示例代码:
```python
import logging
from logging.handlers import TimedRotatingFileHandler
logger = logging.getLogger('name')
logger.setLevel(logging.DEBUG)
# 控制台输出DEBUG日志
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
ch.setFormatter(formatter)
logger.addHandler(ch)
# 将日志按日期切割,并输出到指定文件
fh = TimedRotatingFileHandler('myapp.log', when='midnight', backupCount=30)
fh.setLevel(logging.INFO)
fh.suffix = '%Y-%m-%d.log'
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fh.setFormatter(formatter)
logger.addHandler(fh)
```
然后,将上述代码加入django的settings.py中的logging配置即可。
```python
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'file': {
'level': 'INFO',
'class': 'logging.handlers.TimedRotatingFileHandler',
'filename': 'myapp.log',
'when': 'midnight',
'interval': 1,
'backupCount': 30,
'formatter': 'standard'
},
'console': {
'class': 'logging.StreamHandler',
'level': 'DEBUG',
'formatter': 'standard'
},
},
'loggers': {
'': {
'handlers': ['file', 'console'],
'level': 'DEBUG',
'propagate': True
}
},
'formatters': {
'standard': {
'format': '%(asctime)s - %(levelname)s - %(module)s - %(message)s'
},
}
}
```
这些代码为你提供了一种实现日志分类输出的方式,你可以根据实际需要进行修改。