diff --git a/openbb_platform/core/openbb_core/app/logs/logging_service.py b/openbb_platform/core/openbb_core/app/logs/logging_service.py index 9bbbb71cee38..032069f7c786 100644 --- a/openbb_platform/core/openbb_core/app/logs/logging_service.py +++ b/openbb_platform/core/openbb_core/app/logs/logging_service.py @@ -14,9 +14,16 @@ from openbb_core.app.model.abstract.singleton import SingletonMeta from openbb_core.app.model.system_settings import SystemSettings from openbb_core.app.model.user_settings import UserSettings +from pydantic import BaseModel from pydantic_core import to_jsonable_python +class DummyProvider(BaseModel): + """Dummy Provider for error handling with logs""" + + provider: str = "not_passed_to_kwargs" + + class LoggingService(metaclass=SingletonMeta): """Logging Manager class responsible for managing logging settings and handling logs. @@ -221,9 +228,16 @@ def log( # Remove CommandContext if any kwargs.pop("cc", None) + # Get provider for posthog logs + passed_model = kwargs.get("provider_choices", DummyProvider()) + provider = ( + passed_model.provider + if hasattr(passed_model, "provider") + else "not_passed_to_kwargs" + ) + # Truncate kwargs if too long kwargs = {k: str(v)[:100] for k, v in kwargs.items()} - # Get execution info error = None if all(i is None for i in exec_info) else str(exec_info[1]) @@ -234,6 +248,7 @@ def log( "route": route, "input": kwargs, "error": error, + "provider": provider, "custom_headers": custom_headers, }, default=to_jsonable_python, diff --git a/openbb_platform/core/tests/app/logs/test_logging_service.py b/openbb_platform/core/tests/app/logs/test_logging_service.py index 422f25947ab5..89e56a777cba 100644 --- a/openbb_platform/core/tests/app/logs/test_logging_service.py +++ b/openbb_platform/core/tests/app/logs/test_logging_service.py @@ -146,7 +146,8 @@ class MockCredentials(BaseModel): {}, (None, None, None), None, - 'CMD: {"route": "mock_route", "input": {}, "error": null, "custom_headers": null}', + 'CMD: {"route": "mock_route", "input": {}, "error": null, ' + + '"provider": "not_passed_to_kwargs", "custom_headers": null}', ), ( "mock_settings", @@ -160,7 +161,7 @@ class MockCredentials(BaseModel): ..., ), # ... is of TracebackType, but unnecessary for the test {"X-OpenBB-Test": "test"}, - 'ERROR: {"route": "mock_route", "input": {}, "error": "mock_error", "custom_headers": {"X-OpenBB-Test": "test"}}', # noqa: E501 + 'ERROR: {"route": "mock_route", "input": {}, "error": "mock_error", "provider": "not_passed_to_kwargs", "custom_headers": {"X-OpenBB-Test": "test"}}', # noqa: E501 ), ( "mock_settings",