diff --git a/.env.example b/.env.example index c921fe0..96a7f00 100644 --- a/.env.example +++ b/.env.example @@ -1,6 +1,9 @@ # OpenAI support (required) OPENAI_API_KEY=sk-proj-qwertya +# Logging configuration (optional) +# LOG_LEVEL=INFO # Set to DEBUG, INFO, WARNING, ERROR, or CRITICAL + # VCS connector setup (required to connect core pipeline with VCS) #VCS_PROVIDER=github #VCS_ACCESS_TOKEN= diff --git a/README.md b/README.md index 43a71cc..39db972 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,20 @@ Running as a service to automatically process issues: ## Configuration +### Logging + +DeepNext uses the [Loguru](https://loguru.readthedocs.io/) logger for output. +By default, the log level is set to `INFO` to reduce verbosity. +You can control the log verbosity by setting the `LOG_LEVEL` environment variable +in your `.env` file or in your environment. Supported values include `DEBUG`, +`INFO`, `WARNING`, `ERROR`, and `CRITICAL`. + +Example: +```env +LOG_LEVEL=INFO +``` +Set to `DEBUG` for more detailed logs, or `WARNING`/`ERROR` for less output. + DeepNext supports multiple LLM providers: - OpenAI - AWS Bedrock (Claude, Mistral, and others) diff --git a/apps/app/deep_next/app/entrypoint.py b/apps/app/deep_next/app/entrypoint.py index 1933a8d..5571576 100644 --- a/apps/app/deep_next/app/entrypoint.py +++ b/apps/app/deep_next/app/entrypoint.py @@ -155,8 +155,9 @@ def main() -> None: if __name__ == "__main__": - from deep_next.common.common import load_monorepo_dotenv + from deep_next.common.common import load_monorepo_dotenv, setup_logging load_monorepo_dotenv() + setup_logging() main() diff --git a/apps/app/deep_next/app/entrypoint_scheduled.py b/apps/app/deep_next/app/entrypoint_scheduled.py index 97d4666..83bc904 100644 --- a/apps/app/deep_next/app/entrypoint_scheduled.py +++ b/apps/app/deep_next/app/entrypoint_scheduled.py @@ -41,8 +41,9 @@ def cli(interval_s: int): if __name__ == "__main__": - from deep_next.common.common import load_monorepo_dotenv + from deep_next.common.common import load_monorepo_dotenv, setup_logging load_monorepo_dotenv() + setup_logging() cli() diff --git a/libs/common/deep_next/common/common.py b/libs/common/deep_next/common/common.py index 7486d8d..b67e596 100644 --- a/libs/common/deep_next/common/common.py +++ b/libs/common/deep_next/common/common.py @@ -1,3 +1,5 @@ +import os +import sys import textwrap from dotenv import load_dotenv @@ -18,6 +20,20 @@ def load_monorepo_dotenv() -> None: assert load_dotenv(path, verbose=True, override=True) +def setup_logging() -> None: + """ + Configures Loguru logging level from LOG_LEVEL env variable. + + LOG_LEVEL can be set in the environment or .env file. + Defaults to INFO if not specified. + Example: LOG_LEVEL=DEBUG + """ + log_level = os.environ.get("LOG_LEVEL", "INFO").upper() + logger.remove() + logger.add(sys.stdout, level=log_level) + logger.debug(f"Loguru logging set to level: {log_level}") + + def gitignore_name(name: str) -> str: """Converts the name so that it'll be ignored by git.""" from deep_next.common.config import MONOREPO_ROOT_PATH diff --git a/libs/core/deep_next/core/entrypoint.py b/libs/core/deep_next/core/entrypoint.py index 230ba42..482e180 100644 --- a/libs/core/deep_next/core/entrypoint.py +++ b/libs/core/deep_next/core/entrypoint.py @@ -122,8 +122,9 @@ def cli( if __name__ == "__main__": - from deep_next.common.common import load_monorepo_dotenv + from deep_next.common.common import load_monorepo_dotenv, setup_logging load_monorepo_dotenv() + setup_logging() cli()