AttributeError: module 'picologging' has no attribute 'PlaceHolder'
cofin opened this issue · 0 comments
cofin commented
I'm using picologging
on a project with uvicorn
and I'm running into the following exception. Should this class exist in the picologging
library? I can't find the actual implementation for this.
Here is the line referenced in the error:
picologging/src/picologging/config.py
Line 46 in 16f49d3
and here is a chunk of the traceback:
Launching API Server with Uvicorn
[09/08/22 12:21:12] ERROR Traceback (most recent call last): on.py:121
File "/Users/codyfincher/Code/OPDBA/oracle-database-assessment/master/.venv/lib/python3.10/site-packages/starlette/routing.py", line 645, in lifespan
async with self.lifespan_context(app):
File "/Users/codyfincher/Code/OPDBA/oracle-database-assessment/master/.venv/lib/python3.10/site-packages/starlette/routing.py", line 540, in __aenter__
await self._router.startup()
File "/Users/codyfincher/Code/OPDBA/oracle-database-assessment/master/.venv/lib/python3.10/site-packages/starlite/asgi.py", line 236, in startup
await self._call_lifespan_handler(handler)
File "/Users/codyfincher/Code/OPDBA/oracle-database-assessment/master/.venv/lib/python3.10/site-packages/starlite/asgi.py", line 220, in _call_lifespan_handler
value = handler() # type:ignore
File "/Users/codyfincher/Code/OPDBA/oracle-database-assessment/master/.venv/lib/python3.10/site-packages/starlite/config/logging.py", line 60, in configure
picologging_config.dictConfig(self.dict(exclude_none=True))
File "/Users/codyfincher/Code/OPDBA/oracle-database-assessment/master/.venv/lib/python3.10/site-packages/picologging/config.py", line 332, in dictConfig
dictConfigClass(config).configure()
File "/Users/codyfincher/Code/OPDBA/oracle-database-assessment/master/.venv/lib/python3.10/site-packages/picologging/config.py", line 156, in configure
_handle_existing_loggers(existing, child_loggers, disable_existing)
File "/Users/codyfincher/Code/OPDBA/oracle-database-assessment/master/.venv/lib/python3.10/site-packages/picologging/config.py", line 46, in _handle_existing_loggers
if not isinstance(logger, picologging.PlaceHolder):
AttributeError: module 'picologging' has no attribute 'PlaceHolder'
[09/08/22 12:21:12] ERROR Application startup failed. Exiting.
Here is more details:
│ /Users/codyfincher/Code/OPDBA/oracle-database-assessment/master/.venv/lib/python3.10/site-packag │
│ es/picologging/config.py:156 in configure │
│ │
│ 153 │ │ # and by disabling them, you stop them doing any logging. │
│ 154 │ │ # However, don't disable children of named loggers, as that's │
│ 155 │ │ # probably not what was intended by the user. │
│ ❱ 156 │ │ _handle_existing_loggers(existing, child_loggers, disable_existing) │
│ 157 │ │ │
│ 158 │ │ # And finally, do the root logger │
│ 159 │ │ root = config.get("root", None) │
│ │
│ ╭─────────────────────────────────────────── locals ───────────────────────────────────────────╮ │
│ │ child_loggers = ['starlite_bedrock.starlite.exceptions'] │ │
│ │ config = { │ │
│ │ │ 'version': 1, │ │
│ │ │ 'filters': { │ │
│ │ │ │ 'health_filter': │ │
│ │ <starlite_bedrock.starlite.logging.AccessLogFilter object at 0x10cbe83d0> │ │
│ │ │ }, │ │
│ │ │ 'propagate': True, │ │
│ │ │ 'formatters': {'standard': <Formatter: fmt='%(message)s'>}, │ │
│ │ │ 'handlers': { │ │
│ │ │ │ 'console': │ │
│ │ <starlite_bedrock.starlite.logging.RichPicologgingHandler object at │ │
│ │ 0x10bec03c0>, │ │
│ │ │ │ 'queue_listener': │ │
│ │ <starlite.logging.picologging.QueueListenerHandler object at 0x10cbb4140> │ │
│ │ │ }, │ │
│ │ │ 'loggers': { │ │
│ │ │ │ 'starlite_bedrock': {'propagate': True}, │ │
│ │ │ │ 'uvicorn.access': { │ │
│ │ │ │ │ 'propagate': True, │ │
│ │ │ │ │ 'filters': ['health_filter'] │ │
│ │ │ │ }, │ │
│ │ │ │ 'uvicorn.error': {'propagate': True}, │ │
│ │ │ │ 'gunicorn.access': { │ │
│ │ │ │ │ 'propagate': True, │ │
│ │ │ │ │ 'filters': ['health_filter'] │ │
│ │ │ │ }, │ │
│ │ │ │ 'gunicorn.error': {'propagate': True}, │ │
│ │ │ │ 'sqlalchemy': {'propagate': True}, │ │
│ │ │ │ 'starlite': {'level': 'WARNING', 'propagate': True}, │ │
│ │ │ │ 'pydantic_openapi_schema': { │ │
│ │ │ │ │ 'propagate': True, │ │
│ │ │ │ │ 'level': 'WARNING', │ │
│ │ │ │ │ 'handlers': ['queue_listener'] │ │
│ │ │ │ } │ │
│ │ │ }, │ │
│ │ │ 'root': {'handlers': ['queue_listener'], 'level': 'INFO'} │ │
│ │ } │ │
│ │ deferred = [] │ │
│ │ disable_existing = False │ │
│ │ EMPTY_DICT = {} │ │
│ │ existing = [ │ │
│ │ │ 'opdba', │ │
│ │ │ 'opdba.domain.collection.routes', │ │
│ │ │ 'starlite_bedrock.starlite.exceptions' │ │
│ │ ] │ │
│ │ filters = { │ │
│ │ │ 'health_filter': <starlite_bedrock.starlite.logging.AccessLogFilter │ │
│ │ object at 0x10cbe83d0> │ │
│ │ } │ │
│ │ formatters = {'standard': <Formatter: fmt='%(message)s'>} │ │
│ │ handler = <starlite.logging.picologging.QueueListenerHandler object at 0x10cbb4140> │ │
│ │ handlers = { │ │
│ │ │ 'console': <starlite_bedrock.starlite.logging.RichPicologgingHandler │ │
│ │ object at 0x10bec03c0>, │ │
│ │ │ 'queue_listener': <starlite.logging.picologging.QueueListenerHandler │ │
│ │ object at 0x10cbb4140> │ │
│ │ } │ │
│ │ i = 4 │ │
│ │ incremental = False │ │
│ │ loggers = { │ │
│ │ │ 'starlite_bedrock': {'propagate': True}, │ │
│ │ │ 'uvicorn.access': {'propagate': True, 'filters': ['health_filter']}, │ │
│ │ │ 'uvicorn.error': {'propagate': True}, │ │
│ │ │ 'gunicorn.access': { │ │
│ │ │ │ 'propagate': True, │ │
│ │ │ │ 'filters': ['health_filter'] │ │
│ │ │ }, │ │
│ │ │ 'gunicorn.error': {'propagate': True}, │ │
│ │ │ 'sqlalchemy': {'propagate': True}, │ │
│ │ │ 'starlite': {'level': 'WARNING', 'propagate': True}, │ │
│ │ │ 'pydantic_openapi_schema': { │ │
│ │ │ │ 'propagate': True, │ │
│ │ │ │ 'level': 'WARNING', │ │
│ │ │ │ 'handlers': ['queue_listener'] │ │
│ │ │ } │ │
│ │ } │ │
│ │ name = 'pydantic_openapi_schema' │ │
│ │ num_existing = 4 │ │
│ │ pflen = 24 │ │
│ │ prefixed = 'pydantic_openapi_schema.' │ │
│ │ root = <Logger 'root' (INFO)> │ │
│ │ self = <picologging.config.DictConfigurator object at 0x10cbe8340> │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ │
│ │
│ /Users/codyfincher/Code/OPDBA/oracle-database-assessment/master/.venv/lib/python3.10/site-packag │
│ es/picologging/config.py:46 in _handle_existing_loggers │
│ │
│ 43 │ for log in existing: │
│ 44 │ │ logger = root.manager.loggerDict[log] │
│ 45 │ │ if log in child_loggers: │
│ ❱ 46 │ │ │ if not isinstance(logger, picologging.PlaceHolder): │
│ 47 │ │ │ │ logger.setLevel(picologging.NOTSET) │
│ 48 │ │ │ │ logger.handlers = [] │
│ 49 │ │ │ │ logger.propagate = True │
│ │
│ ╭────────────────────────────────── locals ───────────────────────────────────╮ │
│ │ child_loggers = ['starlite_bedrock.starlite.exceptions'] │ │
│ │ disable_existing = False │ │
│ │ existing = [ │ │
│ │ │ 'opdba', │ │
│ │ │ 'opdba.domain.collection.routes', │ │
│ │ │ 'starlite_bedrock.starlite.exceptions' │ │
│ │ ] │ │
│ │ log = 'starlite_bedrock.starlite.exceptions' │ │
│ │ logger = <Logger 'starlite_bedrock.starlite.exceptions' (NOTSET)> │ │
│ │ root = <Logger 'root' (INFO)> │ │
│ ╰─────────────────────────────────────────────────────────────────────────────╯ │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
AttributeError: module 'picologging' has no attribute 'PlaceHolder'