python - Django - 突然登录到(运行服务器)控制台
问题描述
我不知道为什么Django
开始登录控制台。当我运行django
server (in PyCharm
) 时,在同一个控制台中有日志条目。
我最近安装了我的 fork,pysendpulse
但这可能是巧合。
INFO [2019-04-08 00:59:05,331] Initialization SendPulse REST API Class
DEBUG [2019-04-08 00:59:05,331] Try to get security token from 'MEMCACHED'
DEBUG [2019-04-08 00:59:05,331] Got: 'some string'
INFO [2019-04-08 00:59:05,775] Initialization SendPulse REST API Class
DEBUG [2019-04-08 00:59:05,775] Try to get security token from 'MEMCACHED'
DEBUG [2019-04-08 00:59:05,775] Got: 'some string'
Performing system checks...
System check identified no issues (0 silenced).
DEBUG [2019-04-08 00:59:06,025] (0.001)
SELECT c.relname, c.relkind
FROM pg_catalog.pg_class c
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relkind IN ('r', 'v')
AND n.nspname NOT IN ('pg_catalog', 'pg_toast')
AND pg_catalog.pg_table_is_visible(c.oid); args=None
DEBUG [2019-04-08 00:59:06,026] (0.000) SELECT "django_migrations"."app", "django_migrations"."name" FROM "django_migrations"; args=()
April 08, 2019 - 00:59:06
Django version 2.1.7, using settings 'p.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
例如,第一行是从这里记录的:
logging.info("Initialization SendPulse REST API Class")
settings.LOGGING
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format': '{asctime} {levelname} {module} {message}',
'style': '{',
},
},
'handlers': {
'local_file_debug': {
'level': 'DEBUG',
'class': 'logging.handlers.RotatingFileHandler',
'filename': os.path.join(LOG_PATH, 'django_debug.log'),
'maxBytes': DEFAULT_LOG_SIZE,
'backupCount': 0,
},
'local_file': {
'level': 'WARNING',
'class': 'logging.handlers.RotatingFileHandler',
'filename': os.path.join(LOG_PATH, 'django.log'),
'maxBytes': DEFAULT_LOG_SIZE,
'backupCount': 0,
},
'pipedrive': {
'level': 'DEBUG' if DEBUG else 'INFO',
'class': 'logging.handlers.RotatingFileHandler',
'filename': os.path.join(LOG_PATH, 'pipedrive.log'),
'formatter': 'verbose',
'maxBytes': DEFAULT_LOG_SIZE,
'backupCount': 0,
},
},
'loggers': {
'django': {
'handlers': ['local_file_debug' if DEBUG else 'local_file'],
'level': 'DEBUG',
'propagate': True,
},
'pipedrive': {
'handlers': ['pipedrive'],
'level': 'DEBUG',
},
},
}
你知道问题可能出在哪里吗?
编辑
shell_plus
打印(记录。根)
<RootLogger root (DEBUG)>
打印(logging.Logger.manager.loggerDict)
{'amqp': <Logger amqp (DEBUG)>, 'kombu.connection': <Logger kombu.connection (DEBUG)>, 'kombu': <logging.PlaceHolder object at 0x7f32045565c0>, 'celery': <Logger celery (DEBUG)>, 'celery.task': <Logger celery.task (DEBUG)>, 'celery.worker': <Logger celery.worker (DEBUG)>, 'kombu.common': <Logger kombu.common (DEBUG)>, 'celery.utils.dispatch.signal': <Logger celery.utils.dispatch.signal (DEBUG)>, 'celery.utils.dispatch': <logging.PlaceHolder object at 0x7f3203609898>, 'celery.utils': <logging.PlaceHolder object at 0x7f3203609978>, 'celery.app.builtins': <Logger celery.app.builtins (DEBUG)>, 'celery.app': <logging.PlaceHolder object at 0x7f32036e6c88>, 'celery.app.base': <Logger celery.app.base (DEBUG)>, 'django.template': <Logger django.template (DEBUG)>, 'django': <Logger django (DEBUG)>, 'concurrent.futures': <Logger concurrent.futures (DEBUG)>, 'concurrent': <logging.PlaceHolder object at 0x7f3203267940>, 'asyncio': <Logger asyncio (DEBUG)>, 'django.db.backends': <Logger django.db.backends (DEBUG)>, 'django.db': <logging.PlaceHolder object at 0x7f3202855668>, 'django.request': <Logger django.request (DEBUG)>, 'django.server': <Logger django.server (DEBUG)>, 'pipedrive': <Logger pipedrive (DEBUG)>, 'django.security.csrf': <Logger django.security.csrf (DEBUG)>, 'django.security': <logging.PlaceHolder object at 0x7f32025823c8>, 'django.db.backends.schema': <Logger django.db.backends.schema (DEBUG)>, 'urllib3.util.retry': <Logger urllib3.util.retry (DEBUG)>, 'urllib3.util': <logging.PlaceHolder object at 0x7f31feafb4e0>, 'urllib3': <Logger urllib3 (DEBUG)>, 'urllib3.connection': <Logger urllib3.connection (DEBUG)>, 'urllib3.response': <Logger urllib3.response (DEBUG)>, 'urllib3.connectionpool': <Logger urllib3.connectionpool (DEBUG)>, 'urllib3.poolmanager': <Logger urllib3.poolmanager (DEBUG)>, 'requests': <Logger requests (DEBUG)>, 'superfakura.api': <Logger superfakura.api (DEBUG)>, 'superfakura': <logging.PlaceHolder object at 0x7f31fe527208>, 'p.apps.apis.superfaktura.utils': <Logger p.apps.apis.superfaktura.utils (DEBUG)>, 'p.apps.apis.superfaktura': <logging.PlaceHolder object at 0x7f31fe51c7b8>, 'p.apps.apis': <logging.PlaceHolder object at 0x7f31fe51c860>, 'p.apps': <logging.PlaceHolder object at 0x7f31fe527470>, 'p': <logging.PlaceHolder object at 0x7f31fe527588>, 'p.apps.apis.superfaktura.models': <Logger p.apps.apis.superfaktura.models (DEBUG)>, 'django_bootstrap_breadcrumbs.templatetags.django_bootstrap_breadcrumbs': <Logger django_bootstrap_breadcrumbs.templatetags.django_bootstrap_breadcrumbs (DEBUG)>, 'django_bootstrap_breadcrumbs.templatetags': <logging.PlaceHolder object at 0x7f31fdece2b0>, 'django_bootstrap_breadcrumbs': <logging.PlaceHolder object at 0x7f31fdece2e8>, 'PIL.Image': <Logger PIL.Image (DEBUG)>, 'PIL': <logging.PlaceHolder object at 0x7f31fdea29e8>, 'prompt_toolkit': <Logger prompt_toolkit (DEBUG)>, 'parso.python.diff': <Logger parso.python.diff (DEBUG)>, 'parso.python': <logging.PlaceHolder object at 0x7f31fc597668>, 'parso': <logging.PlaceHolder object at 0x7f31fc597be0>, 'parso.cache': <Logger parso.cache (DEBUG)>, 'TerminalIPythonApp': <Logger TerminalIPythonApp (WARNING)>}
解决方案
我最近安装了我的 fork,
pysendpulse
但这可能是巧合。
这取决于你如何/在哪里分叉它,这不是巧合。包中的
原始pysendpulse
调用。logging.basicConfig
__init__.py
logging.basicConfig(format='%(levelname)-8s [%(asctime)s] %(message)s', level=logging.DEBUG)
的目的basicConfig
是建立...
... 通过创建
StreamHandler
具有默认值的日志系统Formatter
并将其添加到根日志记录器来进行日志记录系统的基本配置。
这是在这里完成的。
由于您将django
记录器配置为传播(这是默认设置)
'propagate': True,
日志记录不仅由您的专用记录器处理,而且还向上发送到祖先链,最终由root
记录器处理。
如果不导入pysendpulse
,则root
记录器没有附加处理程序并设置为默认级别WARNING
;日志记录“丢失”(在root
记录器级别)。
但是对logging.basicConfig
in的调用将pysendpulse
附加StreamHandler
到您的root
记录器并将其设置为 level DEBUG
,因此您可以在控制台上看到消息。
至于解决方案,您可以禁用django
记录器上的传播
'propagate': False,
StreamHandler
从root
记录器中删除
logging.getLogger().removeHandler(logging.getLogger().handlers[0])
或者,由于您显然 fork ,请考虑从模块中pysendpulse
删除logging.basicConfig
调用。__init__.py
推荐阅读
- google-cloud-platform - 如何在 Stackdriver 警报文档中获取 Bigquery 表的名称
- c++ - 如何使用 CMake 简单地将 opencv 包含在我的项目中
- python - 带有 Python 3.4 的 Cherrypy
- python - 将 google api 对象解析为 pandas 数据框
- python - pipenv 搜索包可以像“pip search”吗?
- oauth - 从刷新令牌重新生成访问令牌
- shell - 匹配一行中的确切单词 - Unix
- jsf - 如何制作动态复合组件
- swift - Swift字典通过另一个键的值设置键的值,格式为:“value_of_key1=value_of_key2”
- hyperledger-indy - Hyperledger Indy] indy 一开始是怎么知道爱丽丝的名字的?