From 173162e79876c59394c5bbef9b42d45df3f1b943 Mon Sep 17 00:00:00 2001 From: Kenneth Reitz Date: Fri, 1 Nov 2024 08:39:14 -0400 Subject: [PATCH] Refactor LoggingConfig methods for enabling and disabling logging --- simplemind/__init__.py | 6 ++++++ simplemind/logging.py | 6 ++++-- simplemind/settings.py | 8 ++++---- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/simplemind/__init__.py b/simplemind/__init__.py index cf725c8..b9e4d1a 100644 --- a/simplemind/__init__.py +++ b/simplemind/__init__.py @@ -113,6 +113,11 @@ def generate_text( return provider.generate_text(prompt=prompt, llm_model=llm_model, **kwargs) +def enable_logfire() -> None: + """Enable logfire logging.""" + settings.logging.enable_logfire() + + # Syntax sugar. Plugin = BasePlugin @@ -125,4 +130,5 @@ __all__ = [ "BasePlugin", "Session", "Plugin", + "enable_logfire", ] diff --git a/simplemind/logging.py b/simplemind/logging.py index 369c4c1..c18d718 100644 --- a/simplemind/logging.py +++ b/simplemind/logging.py @@ -7,10 +7,12 @@ from .settings import settings def logger(func: Callable[..., Any]) -> Callable[..., Any]: - """A @logger decorator that logs the function parameters, function returns, and exceptions raised if logging is enabled.""" + """A decorator that logs the function parameters, function returns, + and exceptions raised if logging is enabled, using logfire. + """ def wrapper(*args, **kwargs) -> Any: - if not settings.logging.enabled: + if not settings.logging.is_enabled: return func(*args, **kwargs) logfire.info(f"Calling {func.__name__} with args: {args}, kwargs: {kwargs}") t1 = time.perf_counter() diff --git a/simplemind/settings.py b/simplemind/settings.py index 232298d..a8179b2 100644 --- a/simplemind/settings.py +++ b/simplemind/settings.py @@ -7,7 +7,7 @@ from pydantic_settings import BaseSettings, SettingsConfigDict class LoggingConfig(BaseSettings): """The class that holds all the logging settings for the application.""" - enabled: bool = Field(False, description="Enable logging") + is_enabled: bool = Field(False, description="Enable logging") model_config = SettingsConfigDict(extra="forbid") @@ -22,7 +22,7 @@ class LoggingConfig(BaseSettings): "To enable logging, please install logfire: `pip install logfire`" ) from e - self.enabled = True + self.is_enabled = True logfire.configure(**kwargs) basicConfig(handlers=[logfire.LogfireLoggingHandler()]) @@ -30,12 +30,12 @@ class LoggingConfig(BaseSettings): logfire.configure(**kwargs) basicConfig(handlers=[logfire.LogfireLoggingHandler()]) except Exception as e: - self.enabled = False # Reset flag on failure + self.is_enabled = False # Reset flag on failure raise RuntimeError("Failed to configure logging") from e def disable_logfire(self) -> None: """Disable logging for the application.""" - self.enabled = False + self.is_enabled = False class Settings(BaseSettings):