Fix ref-err on `logger` input to `get_console_log()`
Particularly on a get-attr of `StackLevelAdapter.handlers` which, when a `logger: StackLevelAdapter` is passed, we need to *not call* our own `get_logger()` and just set is as the `log`. Fix the typing to match.pytest_pluginize
parent
a92d0ebf02
commit
06f7f2e06b
|
@ -270,7 +270,9 @@ def get_logger(
|
||||||
subsys_spec: str|None = None,
|
subsys_spec: str|None = None,
|
||||||
|
|
||||||
) -> StackLevelAdapter:
|
) -> StackLevelAdapter:
|
||||||
'''Return the package log or a sub-logger for ``name`` if provided.
|
'''
|
||||||
|
Return the `tractor`-library root logger or a sub-logger for
|
||||||
|
`name` if provided.
|
||||||
|
|
||||||
'''
|
'''
|
||||||
log: Logger
|
log: Logger
|
||||||
|
@ -282,7 +284,7 @@ def get_logger(
|
||||||
name != _proj_name
|
name != _proj_name
|
||||||
):
|
):
|
||||||
|
|
||||||
# NOTE: for handling for modules that use ``get_logger(__name__)``
|
# NOTE: for handling for modules that use `get_logger(__name__)`
|
||||||
# we make the following stylistic choice:
|
# we make the following stylistic choice:
|
||||||
# - always avoid duplicate project-package token
|
# - always avoid duplicate project-package token
|
||||||
# in msg output: i.e. tractor.tractor.ipc._chan.py in header
|
# in msg output: i.e. tractor.tractor.ipc._chan.py in header
|
||||||
|
@ -331,7 +333,7 @@ def get_logger(
|
||||||
|
|
||||||
def get_console_log(
|
def get_console_log(
|
||||||
level: str|None = None,
|
level: str|None = None,
|
||||||
logger: Logger|None = None,
|
logger: Logger|StackLevelAdapter|None = None,
|
||||||
**kwargs,
|
**kwargs,
|
||||||
|
|
||||||
) -> LoggerAdapter:
|
) -> LoggerAdapter:
|
||||||
|
@ -344,12 +346,23 @@ def get_console_log(
|
||||||
Yeah yeah, i know we can use `logging.config.dictConfig()`. You do it.
|
Yeah yeah, i know we can use `logging.config.dictConfig()`. You do it.
|
||||||
|
|
||||||
'''
|
'''
|
||||||
log = get_logger(
|
# get/create a stack-aware-adapter
|
||||||
logger=logger,
|
if (
|
||||||
**kwargs
|
logger
|
||||||
) # set a root logger
|
and
|
||||||
logger: Logger = log.logger
|
isinstance(logger, StackLevelAdapter)
|
||||||
|
):
|
||||||
|
# XXX, for ex. when passed in by a caller wrapping some
|
||||||
|
# other lib's logger instance with our level-adapter.
|
||||||
|
log = logger
|
||||||
|
|
||||||
|
else:
|
||||||
|
log: StackLevelAdapter = get_logger(
|
||||||
|
logger=logger,
|
||||||
|
**kwargs
|
||||||
|
)
|
||||||
|
|
||||||
|
logger: Logger|StackLevelAdapter = log.logger
|
||||||
if not level:
|
if not level:
|
||||||
return log
|
return log
|
||||||
|
|
||||||
|
@ -367,10 +380,7 @@ def get_console_log(
|
||||||
None,
|
None,
|
||||||
)
|
)
|
||||||
):
|
):
|
||||||
fmt = LOG_FORMAT
|
fmt: str = LOG_FORMAT # always apply our format?
|
||||||
# if logger:
|
|
||||||
# fmt = None
|
|
||||||
|
|
||||||
handler = StreamHandler()
|
handler = StreamHandler()
|
||||||
formatter = colorlog.ColoredFormatter(
|
formatter = colorlog.ColoredFormatter(
|
||||||
fmt=fmt,
|
fmt=fmt,
|
||||||
|
|
Loading…
Reference in New Issue