cmanaha / python-elasticsearch-logger

Python Elasticsearch handler for the standard python logging framework
Other
232 stars 116 forks source link

Specifying BASIC_AUTH in JSON configuration #83

Open zferentz opened 3 years ago

zferentz commented 3 years ago

Hi, Thanks for great module !! Would appreciate your help - I think (but not 100% sure) that it's not possible to use BASIC_AUTH in yaml/json configuration as the current auth_type is passed via a Python object (CMRESHandler.AuthType.BASIC_AUTH) . I wonder if i missed anything ?

To solve my problem (use json configuration without forking the project) I'm deriving from CMRESHandler and just on the fly changing the string "BASIC_AUTH" into CMRESHandler.AuthType.BASIC_AUTH. For example:

class MyCMRESHandler(cmreslogging.handlers.CMRESHandler):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        if self.auth_type == "BASIC_AUTH":
            self.auth_type = cmreslogging.handlers.CMRESHandler.AuthType.BASIC_AUTH

and then in my json configuration i use "class": "MyCMRESHandler". I wonder if there's a better way that i missed . Of course, i can fork the project and modify the __get_es_client but i'd rather avoid forking .

mkhadher commented 2 years ago

This feature has been added in https://github.com/mkhadher/python-elasticsearch-logger. You can either specify python object CMRESHandler.AuthType.BASIC_AUTH or string "BASIC_AUTH". There's an example on how to use JSON config file to configure the Elastcisearch handler (PYESHandler)