Python中如何解决Django日志配置与使用问题
想让 django 输出每次 request POST 过来的 json 数据,LOGGING 应该怎么配置?求大佬解答 0.0
Python中如何解决Django日志配置与使用问题
自己手动加一个中间件
在Django里搞日志配置,其实就两步:配settings.py,然后在代码里用。直接上干货。
1. 基础配置(settings.py)
# settings.py
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format': '{levelname} {asctime} {module} {process:d} {thread:d} {message}',
'style': '{',
},
'simple': {
'format': '{levelname} {message}',
'style': '{',
},
},
'handlers': {
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'simple'
},
'file': {
'level': 'INFO',
'class': 'logging.handlers.RotatingFileHandler',
'filename': '/path/to/your/debug.log',
'maxBytes': 1024*1024*5, # 5MB
'backupCount': 5,
'formatter': 'verbose',
},
},
'loggers': {
'django': {
'handlers': ['console', 'file'],
'level': 'INFO',
'propagate': True,
},
'myapp': { # 你的应用专用logger
'handlers': ['file'],
'level': 'DEBUG',
'propagate': False,
},
}
}
2. 在代码中使用
# views.py 或任何地方
import logging
# 获取配置中定义的logger
logger = logging.getLogger('myapp')
def my_view(request):
logger.debug('这是一条debug信息')
logger.info('用户访问了视图')
logger.warning('参数可能有问题: %s', request.GET)
try:
# 你的业务代码
result = some_operation()
except Exception as e:
logger.error('操作失败', exc_info=True) # 会自动记录完整堆栈
return HttpResponseServerError()
关键点:
disable_existing_loggers: 设为False,否则Django自带的logger会被禁用propagate: 设为False可以防止日志重复记录exc_info=True: 记录异常时一定要加这个参数,不然看不到堆栈- 生产环境记得把
DEBUG级别的日志关掉,不然日志文件会暴涨
快速调试:
如果日志没输出,先在视图里加个print(logging.getLogger('myapp').handlers),看看handler有没有正确加载。
总结:配好LOGGING字典,用getLogger拿实例,按级别记录。
https://docs.djangoproject.com/en/2.1/topics/http/middleware/
if request.method==“POST”:
logger.debug(request.body)
跑个题。Django 怎么用 Pycharm 打开 db.sqlite3 数据库文件
找一下 有一个 database 的功能,可以用来连接数据库的
Django 怎么用 Pycharm 打开 db.sqlite3 数据库文件
你这不是跑跑题而是语无论次
哈哈,感谢感谢
问个问题。django 需要 join 多张表的查询数据,怎么写比较合适?
raw sql
写代码写傻了?戾气。麻烦你 Block me. 我重新组织语言:在 PyCharm 里面的 Django Project 里,请问如何才能打开,并浏览 db.sqlite3 数据库文件?
帮你找了一个 https://www.jianshu.com/p/32556afe548f 希望能帮到你
是该 block 你。你为什么来这里跑题啊!
其实你的问题和 django 根本没有关系好吧,再者你需要把文件和库两个不同概念搞清楚。尽管你努力地重新组织了语言,但还是没有什么轮次。我第一次回复你的那句无论是从你的做法上还是事实上并没有说错,你回复里头一句就说我写代码写傻了?反倒说我戾气。确实要 block 你。
谢谢您!

