ariadne icon indicating copy to clipboard operation
ariadne copied to clipboard

Support passing logger instance to logger option

Open tvallois opened this issue 3 years ago • 1 comments

Hello,

First, thanks for the job you do here. In our logging system, we use a special LoggerAdapter for our logging needs and we'd like to use it as well for ariadne. However, looking at the code, we can only get a simple logger by his name but not the adapter.

My code looks like this (it's a django app): (in views.py)

from ariadne.wsgi import GraphQL
from .schema import schema

app = GraphQL(schema, logger="my_app")

(in settings.py)

from logging import getLogger, StreamHandler, getLevelName
from logger_python.logger import EnlapsLoggerAdapter
from my_app.config import Config

internal_logger = getLogger("my_app")
internal_logger.setLevel(getLevelName(Config.log_level))
stream_handler = StreamHandler()
stream_handler.setLevel(getLevelName(Config.log_level))
internal_logger.addHandler(stream_handler)
logger = EnlapsLoggerAdapter(internal_logger, {})

However i'm unable to get my LoggerAdapter on ariadne. It'd be nice if we could "pass" the logger object or the logger name, something like:

from ariadne.wsgi import GraphQL
from my_app.logger import logger
from .schema import schema

app = GraphQL(schema, logger=logger)

I'm open to contribute on this ofc.

Cheers

tvallois avatar Mar 28 '21 18:03 tvallois

Hi!

If this is change for Django app, ariadne_django would also need to get a PR (due to #656).

But option to pass logger instance as logger instead of str makes sense to me. I'll put this on our roadmap. PR's welcome!

rafalp avatar Aug 24 '21 18:08 rafalp