open-telemetry / opentelemetry-python

OpenTelemetry Python API and SDK
https://opentelemetry.io
Apache License 2.0
1.82k stars 636 forks source link

Allow configuration of LoggingHandler in autoinstrumentation #4034

Open lzchen opened 4 months ago

lzchen commented 4 months ago

Is your feature request related to a problem?

Currently in autoinstrumentation, the default LoggingHandler configuration is defaulted to NOTSET, which effectively does not filter messages based on level.

For format configuration, this pr enables the LoggingHandler to respect configured formats for the logging handler.

With MANUAL instrumentation, users can configure logging like below:

logging.config.dictConfig({
    "version": 1,
    "formatters": {
        "simple": {"format": "%(name)s [%(module)s.%(lineno)s]: %(message)s"}
    },
    "handlers": {
        "console": {
            "level": "INFO",
            "formatter": "simple",
            "class": "opentelemetry.sdk._logs.LoggingHandler",
            "logger_provider": logger_provider,
        }
    },
    "loggers": {
        "__main__": {"handlers": ["console"], "level": "INFO"},
    }
})

however with autoinstrumentation sometimes this is not possible.

Describe the solution you'd like

We should have a way to configure logging level and format using autoinstrumentation (most likely with env vars), similarly to how opentelemetry-instrumetation-logging does.

Describe alternatives you've considered

No response

Additional Context

No response

Would you like to implement a fix?

None

jeremydvoss commented 2 months ago

Manual instrumentation formatting merged in https://github.com/open-telemetry/opentelemetry-python/pull/4166 (variation of pr mentioned in this description.