def test_configured_logger(): # Logger has been configured in settings.py # In such case, logging.getLogger() and get_modernrpc_logger() return # the same object instance, without any modification logger = logging.getLogger('my_app') assert logger_has_handlers(logger) is True assert logger is get_modernrpc_logger('my_app')
def test_unconfigured_logger(): # When trying to retrieve an unconfigured logger with logging.getLogger(), no handler is associated logger = logging.getLogger('xxx_unconfigured') assert logger_has_handlers(logger) is False # If we retrieve it with get_modernrpc_logger(), the returned object has a default NullHandler attached logger2 = get_modernrpc_logger('xxx_unconfigured') assert logger_has_handlers(logger2) is True assert len(logger2.handlers) == 1 assert isinstance(logger2.handlers[0], logging.NullHandler)
def test_unconfigured_no_propagate(): # If a parent of unconfigured logger have no handlers AND propagate flag set to False, the returned object # cannot handle any log message logger = logging.getLogger('my_app.a.b') assert logger_has_handlers(logger) is False # But as before, get_modernrpc_logger() returns a logger with a default NullHandler logger2 = get_modernrpc_logger('my_app.a.b') assert logger_has_handlers(logger2) is True assert len(logger2.handlers) == 1 assert isinstance(logger2.handlers[0], logging.NullHandler)
def test_unconfigured_logger_pytest_33_and_more(): # When trying to retrieve an unconfigured logger with logging.getLogger(), no handler is associated # Note: pytest 3.3 and later automatically attach a root logger when running tests logger = logging.getLogger('xxx_unconfigured') assert logger_has_handlers(logger) is True logger2 = get_modernrpc_logger('xxx_unconfigured') assert logger_has_handlers(logger2) is True # This logger still has no handler... assert len(logger2.handlers) == 0 # ...but root logger has some assert len(logger2.parent.handlers) > 0
# coding: utf-8 from django.core.exceptions import ImproperlyConfigured from django.http.response import HttpResponse, HttpResponseForbidden from django.utils.decorators import method_decorator from django.utils.module_loading import import_string from django.views.decorators.csrf import csrf_exempt from django.views.generic.base import View, TemplateView from modernrpc.conf import settings from modernrpc.core import ALL, registry from modernrpc.exceptions import RPCInternalError, RPCException, AuthenticationFailed from modernrpc.utils import ensure_sequence, get_modernrpc_logger logger = get_modernrpc_logger(__name__) class RPCEntryPoint(TemplateView): """ This is the main entry point class. It inherits standard Django View class. """ template_name = 'modernrpc/doc_index.html' entry_point = settings.MODERNRPC_DEFAULT_ENTRYPOINT_NAME protocol = ALL enable_doc = False enable_rpc = True def __init__(self, **kwargs): super(RPCEntryPoint, self).__init__(**kwargs)