12345678910111213141516171819202122232425262728293031323334 |
- # This file is dual licensed under the terms of the Apache License, Version
- # 2.0, and the MIT License. See the LICENSE file in the root of this
- # repository for complete details.
- """
- Generic bound logger that can wrap anything.
- """
- from __future__ import absolute_import, division, print_function
- from functools import partial
- from structlog._base import BoundLoggerBase
- class BoundLogger(BoundLoggerBase):
- """
- A generic BoundLogger that can wrap anything.
- Every unknown method will be passed to the wrapped logger. If that's too
- much magic for you, try :class:`structlog.stdlib.BoundLogger` or
- :class:`structlog.twisted.BoundLogger` which also take advantage of
- knowing the wrapped class which generally results in better performance.
- Not intended to be instantiated by yourself. See
- :func:`~structlog.wrap_logger` and :func:`~structlog.get_logger`.
- """
- def __getattr__(self, method_name):
- """
- If not done so yet, wrap the desired logger method & cache the result.
- """
- wrapped = partial(self._proxy_to_logger, method_name)
- setattr(self, method_name, wrapped)
- return wrapped
|