Skip to content

Commit ccbff2c

Browse files
authored
feat: improve logging setup (#261)
Signed-off-by: Federico Bond <[email protected]>
1 parent 15ce8f9 commit ccbff2c

File tree

3 files changed

+17
-3
lines changed

3 files changed

+17
-3
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ client.get_boolean_flag("my-flag", False, flag_evaluation_options=options)
187187

188188
### Logging
189189

190-
Logging customization is not yet available in the Python SDK.
190+
The OpenFeature SDK logs to the `openfeature` logger using the `logging` package from the Python Standard Library.
191191

192192
### Named clients
193193

openfeature/client.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@
2727
from openfeature.provider.no_op_provider import NoOpProvider
2828
from openfeature.provider.provider import AbstractProvider
2929

30+
logger = logging.getLogger("openfeature")
31+
3032
GetDetailCallable = typing.Union[
3133
typing.Callable[
3234
[str, bool, typing.Optional[EvaluationContext]], FlagResolutionDetails[bool]
@@ -313,6 +315,12 @@ def evaluate_flag_details(
313315
return flag_evaluation
314316

315317
except OpenFeatureError as err:
318+
logger.exception(
319+
"Error %s while evaluating flag with key: '%s'",
320+
err.error_code,
321+
flag_key,
322+
)
323+
316324
error_hooks(flag_type, hook_context, err, reversed_merged_hooks, hook_hints)
317325

318326
return FlagEvaluationDetails(
@@ -325,6 +333,10 @@ def evaluate_flag_details(
325333
# Catch any type of exception here since the user can provide any exception
326334
# in the error hooks
327335
except Exception as err: # pragma: no cover
336+
logger.exception(
337+
"Unable to correctly evaluate flag with key: '%s'", flag_key
338+
)
339+
328340
error_hooks(flag_type, hook_context, err, reversed_merged_hooks, hook_hints)
329341

330342
error_message = getattr(err, "error_message", str(err))
@@ -363,7 +375,7 @@ def _create_provider_evaluation(
363375
)
364376

365377
if not self.provider:
366-
logging.info("No provider configured, using no-op provider.")
378+
logger.info("No provider configured, using no-op provider.")
367379
self.provider = NoOpProvider()
368380

369381
get_details_callables: typing.Mapping[FlagType, GetDetailCallable] = {

openfeature/hook/hook_support.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
from openfeature.flag_evaluation import FlagEvaluationDetails, FlagType
77
from openfeature.hook import Hook, HookContext, HookType
88

9+
logger = logging.getLogger("openfeature")
10+
911

1012
def error_hooks(
1113
flag_type: FlagType,
@@ -128,5 +130,5 @@ def _execute_hook_checked(
128130
getattr(hook, hook_method.value)(**kwargs),
129131
)
130132
except Exception: # pragma: no cover
131-
logging.error(f"Exception when running {hook_method.value} hooks")
133+
logger.exception(f"Exception when running {hook_method.value} hooks")
132134
return None

0 commit comments

Comments
 (0)