41 lines
1.1 KiB
Python
41 lines
1.1 KiB
Python
|
|
import logging
|
||
|
|
import os
|
||
|
|
import traceback
|
||
|
|
from opentelemetry.instrumentation.pinecone.config import Config
|
||
|
|
|
||
|
|
|
||
|
|
def dont_throw(func):
|
||
|
|
"""
|
||
|
|
A decorator that wraps the passed in function and logs exceptions instead of throwing them.
|
||
|
|
|
||
|
|
@param func: The function to wrap
|
||
|
|
@return: The wrapper function
|
||
|
|
"""
|
||
|
|
# Obtain a logger specific to the function's module
|
||
|
|
logger = logging.getLogger(func.__module__)
|
||
|
|
|
||
|
|
def wrapper(*args, **kwargs):
|
||
|
|
try:
|
||
|
|
return func(*args, **kwargs)
|
||
|
|
except Exception as e:
|
||
|
|
logger.debug(
|
||
|
|
"OpenLLMetry failed to trace in %s, error: %s",
|
||
|
|
func.__name__,
|
||
|
|
traceback.format_exc(),
|
||
|
|
)
|
||
|
|
if Config.exception_logger:
|
||
|
|
Config.exception_logger(e)
|
||
|
|
|
||
|
|
return wrapper
|
||
|
|
|
||
|
|
|
||
|
|
def set_span_attribute(span, name, value):
|
||
|
|
if value is not None:
|
||
|
|
if value != "":
|
||
|
|
span.set_attribute(name, value)
|
||
|
|
return
|
||
|
|
|
||
|
|
|
||
|
|
def is_metrics_enabled() -> bool:
|
||
|
|
return (os.getenv("TRACELOOP_METRICS_ENABLED") or "true").lower() == "true"
|