Closed sonion028 closed 3 years ago
日志记录与django-db-connection-pool无关,可以通过配置对应的logger来调整日志的输出,例如你可以新增一个logger:"sqlalchemy.pool": { "handlers": [
"database",
],
"level": "INFO",
"propagate": false
}
您好: 是有日志是有设置的。但是现在是不知道这个日志设置不知道是设置到哪里。
在Django项目里设置试过,并没有效果。如下:
LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'handlers': { 'file': { 'level': 'DEBUG', 'class': 'logging.FileHandler', 'filename': '/home/debug.log', }, }, 'loggers': { 'django': { 'handlers': ['file'], 'level': 'DEBUG', 'propagate': True, }, 'sqlalchemy.pool':{ 'handlers': ['file'], "level":"INFO", "propagate":False } }, }
所以想问是设置到Django项目里、还是sqlalchemy里还是django-db-connection-pool里?
刚入门,小白问题麻烦您说清楚点,非常感谢。
这是 python logging 日志级别的定义
CRITICAL = 50
FATAL = CRITICAL
ERROR = 40
WARNING = 30
WARN = WARNING
INFO = 20
DEBUG = 10
NOTSET = 0
跳过 INFO 级别只想输出 WARNING 和 DEBUG ,逻辑上是有问题的
另外,如果想屏蔽 sqlalchemy 的 console 日志输出,可以在调用 dj_db_conn_pool.setup 时,传递 echo=False 来屏蔽 sqlalchemy 的 console 输出
不好意思,说错了。应该是不输出INFO级别以下的,输出WARNING 、ERROR这些应该是没问题吧?之前说成了单跳过INFO。 如果只输出WARNING 及以上级别的日志该怎么设置呢?设置在哪里呢?求教。
还有您说:“如果想屏蔽 sqlalchemy 的 console 日志输出,可以在调用 dj_db_conn_pool.setup 时,传递 echo=False 来屏蔽 sqlalchemy 的 console 输出” 这里的调用指哪一步啊?您的包只有将数据库的配置改改成这个啊:
MySQL change django.db.backends.mysql to dj_db_conn_pool.backends.mysql:
DATABASES = { 'default': { ... 'ENGINE': 'dj_db_conn_pool.backends.mysql' ... } }
所以您指的调用时时加参数,是指改包代码中的调用?
再次感谢您耐心的解答,小白基础比较差望勿介意。谢谢
不客气。
如果只想输出 WARNING 及以上,应该将级别设置成 WARNING:
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'file': {
'level': 'DEBUG',
'class': 'logging.FileHandler',
'filename': '/home/debug.log',
},
},
'loggers': {
'django': {
'handlers': ['file'],
'level': 'DEBUG',
'propagate': True,
},
'sqlalchemy.pool': {
'handlers': ['file'],
# 这里需要修改日志级别
'level': 'WARNING',
'propagate': False
}
},
}
屏蔽 sqlalchemy 的 console 日志输出,可以在你的项目 settings 或者顶级 __init__.py
中添加调用 dj_db_conn_pool.setup(echo=False)
来实现,这个调用必须在 django 获取数据库连接前。
sorry,又来打扰你了。 LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'handlers': { 'file': { 'level': 'DEBUG', 'class': 'logging.FileHandler', 'filename': '/home/debug.log', }, }, 'loggers': { 'django': { 'handlers': ['file'], 'level': 'DEBUG', 'propagate': True, }, 'sqlalchemy.pool': { 'handlers': ['file'],
'level': 'WARNING',
'propagate': False
}
},
}
并没有什么用,反而还报错了。 项目 settings 中添加调用 dj_db_conn_pool.setup(echo=False)也报错,数据库链接就出错了。
麻烦您帮帮忙看看只显示WARNING以上的日志怎么设置。 非常感谢
您好: 首先感谢您的劳动和分享精神。作为一个刚入门或者说还没入门的小白,用您的Django链接池的包确实解决了实际问题。
其次,想请问您,这个包的日志等级怎么设置的?我Django项目的日志设置的是debug。用了您写的这个链接池的包后,日志里会生成如下日志: 2020-11-15 17:33:21,750 INFO sqlalchemy.pool.impl.QueuePool Connection <pymysql.connections.Connection object at 0x7f7d6ec319e8> exceeded timeout; recycling
而且还挺多的。虽然不影响使用,但每次看日志的时候还是会影响查看效率。想说咱这个链接池的包怎么能只输出warning和debug级别的日志。
感谢您,望回复。