blob: b26dfd0b5f14aad41a5ca7128bd218617e417e87 [file] [log] [blame]
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
from .structuredlog import get_default_logger
class ProxyLogger(object):
"""
A ProxyLogger behaves like a
:class:`mozlog.structuredlog.StructuredLogger`.
Each method and attribute access will be forwarded to the underlying
StructuredLogger.
RuntimeError will be raised when the default logger is not yet initialized.
"""
def __init__(self, component=None):
self.logger = None
self._component = component
def __getattr__(self, name):
if self.logger is None:
self.logger = get_default_logger(component=self._component)
if self.logger is None:
raise RuntimeError("Default logger is not initialized!")
return getattr(self.logger, name)
def get_proxy_logger(component=None):
"""
Returns a :class:`ProxyLogger` for the given component.
"""
return ProxyLogger(component)