# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License.
from applicationinsights import logging

from . import common


class LoggingHandler(logging.LoggingHandler):
    """This class is a LoggingHandler that uses the same settings as the Django middleware to configure
    the telemetry client.  This can be referenced from LOGGING in your Django settings.py file.  As an
    example, this code would send all Django log messages, WARNING and up, to Application Insights:

    .. code:: python

            LOGGING = {
                'version': 1,
                'disable_existing_loggers': False,
                'handlers': {
                    # The application insights handler is here
                    'appinsights': {
                        'class': 'applicationinsights.django.LoggingHandler',
                        'level': 'WARNING'
                    }
                },
                'loggers': {
                    'django': {
                        'handlers': ['appinsights'],
                        'level': 'WARNING',
                        'propagate': True,
                    }
                }
            }

            # You will need this anyway if you're using the middleware.
            # See the middleware documentation for more information on configuring
            # this setting:
            APPLICATION_INSIGHTS = {
                'ikey': '00000000-0000-0000-0000-000000000000'
            }
    """

    def __init__(self, *args, **kwargs):
        client = common.create_client()
        new_kwargs = {}
        new_kwargs.update(kwargs)
        new_kwargs["telemetry_channel"] = client.channel
        super(LoggingHandler, self).__init__(
            client.context.instrumentation_key, *args, **new_kwargs
        )
