我不知道为什么Django
开始登录控制台。当我运行django
服务器(在PyCharm
中)时,同一控制台中有日志条目。
我最近安装了pysendpulse
的fork,但这可能是偶然的。
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
打印(logging.root)
<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)>}
答案 0 :(得分:1)
我最近安装了
pysendpulse
的fork,但这可能是 巧合。
取决于您如何/在何处分叉,这并非巧合。
原始pysendpulse
调用程序包logging.basicConfig
中的__init__.py
。
logging.basicConfig(format='%(levelname)-8s [%(asctime)s] %(message)s', level=logging.DEBUG)
basicConfig
的目的是设置...
...通过创建一个日志系统的基本配置
StreamHandler
和默认Formatter
并将其添加到根目录 记录器。
这here完成了。
由于您将django
记录器配置为传播(默认设置)
'propagate': True,
日志记录不仅由您的专用记录器处理,而且还沿祖先链发送,最后由root
记录器结束。
在不导入pysendpulse
的情况下,root
记录器未附加处理程序,并设置为默认级别WARNING
;日志记录会“丢失”(在root
记录器级别)。
但是logging.basicConfig
中对pysendpulse
的调用会将StreamHandler
附加到您的{ {1}}记录器并将其设置为root
级别,因此您会在控制台上看到消息。
对于解决方案,您可以禁用DEBUG
记录器上的传播
django
从'propagate': False,
记录器中删除StreamHandler
root
或者,因为您显然分叉了logging.getLogger().removeHandler(logging.getLogger().handlers[0])
,请考虑从pysendpulse
模块中删除logging.basicConfig
调用。