Skip to content

Commit 804534e

Browse files
authored
[BugFix] Make "logging_suppress" in SystemSettings Mutable and Then Actually Suppress Logging Service (#6933)
* make logging_suppress mutable and then actually suppress the logging service * no startup log if true * fix tests * make kwarg truncate bigger * fix other tests
1 parent baff57d commit 804534e

File tree

8 files changed

+72
-46
lines changed

8 files changed

+72
-46
lines changed

openbb_platform/core/openbb_core/app/logs/handlers_manager.py

+6-3
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,9 @@ def setup(self):
3535
self._add_stderr_handler()
3636
elif handler_type == "noop":
3737
self._add_noop_handler()
38-
elif handler_type == "file":
38+
elif handler_type == "file" and not self._settings.logging_suppress:
3939
self._add_file_handler()
40-
elif handler_type == "posthog":
40+
elif handler_type == "posthog" and not self._settings.logging_suppress:
4141
self._add_posthog_handler()
4242
else:
4343
self._logger.debug("Unknown log handler.")
@@ -81,6 +81,9 @@ def update_handlers(self, settings: LoggingSettings):
8181
"""Update the handlers with new settings."""
8282
logger = self._logger
8383
for hdlr in logger.handlers:
84-
if isinstance(hdlr, (PathTrackingFileHandler, PosthogHandler)):
84+
if (
85+
isinstance(hdlr, (PathTrackingFileHandler, PosthogHandler))
86+
and not settings.logging_suppress
87+
):
8588
hdlr.settings = settings
8689
hdlr.formatter.settings = settings # type: ignore

openbb_platform/core/openbb_core/app/logs/logging_service.py

+41-39
Original file line numberDiff line numberDiff line change
@@ -217,42 +217,44 @@ def log(
217217
)
218218
self._handlers_manager.update_handlers(self._logging_settings)
219219

220-
if "login" in route:
221-
self._log_startup(route, custom_headers)
222-
else:
223-
224-
# Remove CommandContext if any
225-
kwargs.pop("cc", None)
226-
227-
# Get provider for posthog logs
228-
passed_model = kwargs.get("provider_choices", DummyProvider())
229-
provider = (
230-
passed_model.provider
231-
if hasattr(passed_model, "provider")
232-
else "not_passed_to_kwargs"
233-
)
234-
235-
# Truncate kwargs if too long
236-
kwargs = {k: str(v)[:100] for k, v in kwargs.items()}
237-
# Get execution info
238-
error = None if all(i is None for i in exec_info) else str(exec_info[1])
239-
240-
# Construct message
241-
message_label = "ERROR" if error else "CMD"
242-
log_message = json.dumps(
243-
{
244-
"route": route,
245-
"input": kwargs,
246-
"error": error,
247-
"provider": provider,
248-
"custom_headers": custom_headers,
249-
},
250-
default=to_jsonable_python,
251-
)
252-
log_message = f"{message_label}: {log_message}"
253-
log_level = self._logger.error if error else self._logger.info
254-
log_level(
255-
log_message,
256-
extra={"func_name_override": func.__name__},
257-
exc_info=exec_info,
258-
)
220+
if not self._logging_settings.logging_suppress:
221+
222+
if "login" in route:
223+
self._log_startup(route, custom_headers)
224+
else:
225+
226+
# Remove CommandContext if any
227+
kwargs.pop("cc", None)
228+
229+
# Get provider for posthog logs
230+
passed_model = kwargs.get("provider_choices", DummyProvider())
231+
provider = (
232+
passed_model.provider
233+
if hasattr(passed_model, "provider")
234+
else "not_passed_to_kwargs"
235+
)
236+
237+
# Truncate kwargs if too long
238+
kwargs = {k: str(v)[:300] for k, v in kwargs.items()}
239+
# Get execution info
240+
error = None if all(i is None for i in exec_info) else str(exec_info[1])
241+
242+
# Construct message
243+
message_label = "ERROR" if error else "CMD"
244+
log_message = json.dumps(
245+
{
246+
"route": route,
247+
"input": kwargs,
248+
"error": error,
249+
"provider": provider,
250+
"custom_headers": custom_headers,
251+
},
252+
default=to_jsonable_python,
253+
)
254+
log_message = f"{message_label}: {log_message}"
255+
log_level = self._logger.error if error else self._logger.info
256+
log_level(
257+
log_message,
258+
extra={"func_name_override": func.__name__},
259+
exc_info=exec_info,
260+
)

openbb_platform/core/openbb_core/app/logs/models/logging_settings.py

+2
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ def __init__(
4949
self.platform: str = system_settings.platform
5050
self.python_version: str = system_settings.python_version
5151
self.platform_version: str = system_settings.version
52+
self.logging_suppress: bool = system_settings.logging_suppress
53+
self.log_collect: bool = system_settings.log_collect
5254
# User
5355
self.user_id: Optional[str] = user_id
5456
self.user_logs_directory: Path = get_log_dir(user_data_directory)

openbb_platform/core/openbb_core/app/service/system_service.py

+1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ class SystemService(metaclass=SingletonMeta):
2222
"api_settings",
2323
"python_settings",
2424
"debug_mode",
25+
"logging_suppress",
2526
}
2627

2728
PRO_VALIDATION_HASH = "300ac59fdcc8f899e0bc5c18cda8652220735da1a00e2af365efe9d8e5fe8306" # pragma: allowlist secret

openbb_platform/core/tests/app/logs/handlers/test_path_tracking_file_handler.py

+2
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ def __init__(self, app_name, user_logs_directory, session_id, frequency):
3030
)
3131
logging_settings.session_id = "test_session_id"
3232
logging_settings.frequency = "H"
33+
logging_settings.logging_suppress = False
34+
logging_settings.log_collect = True
3335

3436

3537
@pytest.fixture(scope="module")

openbb_platform/core/tests/app/logs/handlers/test_posthog_handler.py

+2
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@ def __init__(
5454
logging_settings.python_version = "3.9"
5555
logging_settings.platform_version = "1.2.3"
5656
logging_settings.user_id = "user123"
57+
logging_settings.logging_suppress = False
58+
logging_settings.log_collect = True
5759

5860

5961
@pytest.fixture

openbb_platform/core/tests/app/logs/test_handlers_manager.py

+2
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@ def test_handlers_added_correctly():
5353
settings = Mock()
5454
settings.verbosity = 20
5555
settings.handler_list = ["stdout", "stderr", "noop", "file", "posthog"]
56+
settings.log_collect = True
57+
settings.logging_suppress = False
5658
logger = logging.getLogger("test_handlers_added_correctly")
5759
handlers_manager = HandlersManager(logger=logger, settings=settings)
5860
handlers_manager.setup()

openbb_platform/core/tests/app/logs/test_logging_service.py

+16-4
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,24 @@
1313
# pylint: disable=redefined-outer-name, protected-access
1414

1515

16+
class MockSystemSettings:
17+
"""Mock system settings."""
18+
19+
def __init__(self):
20+
"""Initialize the mock system settings."""
21+
self.logging_suppress = False
22+
self.log_collect = True
23+
24+
1625
class MockLoggingSettings:
1726
"""Mock logging settings."""
1827

1928
def __init__(self, system_settings, user_settings):
2029
"""Initialize the mock logging settings."""
2130
self.system_settings = system_settings
2231
self.user_settings = user_settings
32+
self.logging_suppress = False
33+
self.log_collect = True
2334

2435

2536
class MockOBBject(BaseModel):
@@ -32,7 +43,7 @@ class MockOBBject(BaseModel):
3243
@pytest.fixture(scope="function")
3344
def logging_service():
3445
"""Return a LoggingService instance."""
35-
mock_system_settings = Mock()
46+
mock_system_settings = MockSystemSettings()
3647
mock_user_settings = Mock()
3748
mock_setup_handlers = Mock()
3849
mock_log_startup = Mock()
@@ -112,6 +123,7 @@ class MockCredentials(BaseModel):
112123
credentials=MockCredentials(username="username", password="password"),
113124
)
114125
logging_service._system_settings = "your_system_settings"
126+
logging_service._system_settings
115127

116128
logging_service._log_startup(
117129
route="test_route", custom_headers={"X-OpenBB-Test": "test"}
@@ -138,7 +150,7 @@ class MockCredentials(BaseModel):
138150
[
139151
(
140152
"mock_settings",
141-
"mock_system",
153+
MockSystemSettings(),
142154
"mock_route",
143155
"mock_func",
144156
{},
@@ -149,7 +161,7 @@ class MockCredentials(BaseModel):
149161
),
150162
(
151163
"mock_settings",
152-
"mock_system",
164+
MockSystemSettings(),
153165
"mock_route",
154166
"mock_func",
155167
{},
@@ -163,7 +175,7 @@ class MockCredentials(BaseModel):
163175
),
164176
(
165177
"mock_settings",
166-
"mock_system",
178+
MockSystemSettings(),
167179
"login",
168180
"mock_func",
169181
{},

0 commit comments

Comments
 (0)