Skip to content

Commit f1c9570

Browse files
authored
fix: make logs for each process - mcp, sync, cli (#64)
Signed-off-by: phernandez <paul@basicmachines.co>
1 parent 3c68b7d commit f1c9570

2 files changed

Lines changed: 46 additions & 11 deletions

File tree

src/basic_memory/config.py

Lines changed: 45 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,13 @@
55
from pathlib import Path
66
from typing import Any, Dict, Literal, Optional
77

8-
import basic_memory
9-
from basic_memory.utils import setup_logging
108
from loguru import logger
119
from pydantic import Field, field_validator
1210
from pydantic_settings import BaseSettings, SettingsConfigDict
1311

12+
import basic_memory
13+
from basic_memory.utils import setup_logging
14+
1415
DATABASE_NAME = "memory.db"
1516
DATA_DIR_NAME = ".basic-memory"
1617
CONFIG_FILE_NAME = "config.json"
@@ -213,11 +214,45 @@ def get_project_config(project_name: Optional[str] = None) -> ProjectConfig:
213214
log_dir = user_home / DATA_DIR_NAME
214215
log_dir.mkdir(parents=True, exist_ok=True)
215216

216-
setup_logging(
217-
env=config.env,
218-
home_dir=user_home, # Use user home for logs
219-
log_level=config.log_level,
220-
log_file=f"{DATA_DIR_NAME}/basic-memory.log",
221-
console=False,
222-
)
223-
logger.info(f"Starting Basic Memory {basic_memory.__version__} (Project: {config.project})")
217+
218+
def get_process_name(): # pragma: no cover
219+
"""
220+
get the type of process for logging
221+
"""
222+
import sys
223+
224+
if "sync" in sys.argv:
225+
return "sync"
226+
elif "mcp" in sys.argv:
227+
return "mcp"
228+
else:
229+
return "cli"
230+
231+
232+
process_name = get_process_name()
233+
234+
# Global flag to track if logging has been set up
235+
_LOGGING_SETUP = False
236+
237+
def setup_basic_memory_logging(): # pragma: no cover
238+
"""Set up logging for basic-memory, ensuring it only happens once."""
239+
global _LOGGING_SETUP
240+
if _LOGGING_SETUP:
241+
# We can't log before logging is set up
242+
# print("Skipping duplicate logging setup")
243+
return
244+
245+
setup_logging(
246+
env=config.env,
247+
home_dir=user_home, # Use user home for logs
248+
log_level=config.log_level,
249+
log_file=f"{DATA_DIR_NAME}/basic-memory-{process_name}.log",
250+
console=False,
251+
)
252+
253+
logger.info(f"Starting Basic Memory {basic_memory.__version__} (Project: {config.project})")
254+
_LOGGING_SETUP = True
255+
256+
257+
# Set up logging
258+
setup_basic_memory_logging()

uv.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)