Ten dokument opisuje szczegółowo, jak LogLama pełni rolę głównego serwisu w ekosystemie PyLama, zapewniając scentralizowane zarządzanie środowiskiem, walidację zależności, orkiestrację usług i kompleksowe logowanie.
Ekosystem PyLama składa się z wielu komponentów, które współpracują ze sobą, aby zapewnić kompleksowe środowisko do generowania i wykonywania kodu Python. LogLama służy jako główny serwis, który uruchamia się jako pierwszy i koordynuje wszystkie pozostałe komponenty. Każdy komponent generuje logi, które są zbierane, przechowywane i udostępniane do analizy przez scentralizowany system logowania LogLama. Ten główny serwis zapewnia, że wszystkie komponenty mają prawidłową konfigurację przed uruchomieniem i zapewnia kompleksową widoczność całego ekosystemu.
graph TD
A[WebLama] -->|Logi| E[LogLama]
B[APILama] -->|Logi| E
C[BEXY] -->|Logi| E
D[PyLLM] -->|Logi| E
F[PyLama] -->|Logi| E
E -->|Przeglądanie logów| G[Interfejs Web]
E -->|Komendy CLI| H[Linia komend]
I[Kolektor logów] -->|Zaplanowana kolekcja| E
Jako główny serwis w ekosystemie PyLama, LogLama implementuje architekturę hub-and-spoke, gdzie służy jako centralny hub, który koordynuje wszystkie inne komponenty (spoke) i zbiera ich logi. System jest zaprojektowany, aby być:
+----------------+ +----------------+ +----------------+
| | | | | |
| WebLama | | APILama | | BEXY |
| | | | | |
+-------+--------+ +-------+--------+ +-------+--------+
| | |
| | |
v v v
+-------+---------------------+---------------------+--------+
| |
| LogLama |
| |
+-----------------------------+----------------------------+-+
| |
v v
+---------+----------+ +---------+---------+
| | | |
| Web Interface | | CLI Commands |
| | | |
+--------------------+ +-------------------+
LogLama jest głównym serwisem w ekosystemie PyLama, odpowiedzialnym za scentralizowane zarządzanie środowiskiem, walidację zależności, orkiestrację usług i kompleksowe logowanie. Jako pierwszy uruchamiany serwis, LogLama zapewnia:
.env
Usługa działająca w tle, która okresowo zbiera logi ze wszystkich komponentów i importuje je do bazy danych LogLama. Kolektor może:
Każdy komponent w ekosystemie PyLama używa strukturalnego logowania z informacjami kontekstowymi, aby zapewnić, że logi mogą być prawidłowo zbierane i kategoryzowane. Komponenty obejmują:
Poniższy diagram ilustruje, jak logi przepływają przez system:
sequenceDiagram
participant Component as Komponent PyLama
participant LogFile as Plik logów/DB
participant Collector as Kolektor logów
participant LogLama as LogLama DB
participant UI as Interfejs Web
Component->>LogFile: Generuj log
Note over Component,LogFile: Komponent zapisuje do własnego pliku logów lub DB
Collector->>LogFile: Zbierz logi
Collector->>LogLama: Importuj logi
Note over Collector,LogLama: Logi są importowane z kontekstem komponentu
UI->>LogLama: Zapytanie o logi
LogLama->>UI: Zwróć przefiltrowane logi
System logowania używa następujących zmiennych środowiskowych do konfiguracji:
Zmienna | Opis | Domyślna wartość |
---|---|---|
LOGLAMA_LOG_DIR | Katalog do przechowywania plików logów | ./logs |
LOGLAMA_LOG_LEVEL | Poziom logowania dla LogLama | INFO |
LOGLAMA_DB_PATH | Ścieżka do bazy danych LogLama | logs/loglama.db |
LOGLAMA_MAX_MESSAGE_LENGTH | Maksymalna długość wiadomości logów | 2000 |
COLLECT_INTERVAL | Interwał zbierania logów (sekundy) | 300 |
Każdy komponent musi być skonfigurowany do używania strukturalnego logowania z następującymi informacjami kontekstowymi:
Przykładowa konfiguracja dla WebLama:
import logging
import structlog
def setup_logging():
structlog.configure(
processors=[
structlog.stdlib.add_log_level,
structlog.stdlib.PositionalArgumentsFormatter(),
structlog.processors.TimeStamper(fmt="iso"),
structlog.processors.JSONRenderer()
],
context_class=dict,
logger_factory=structlog.stdlib.LoggerFactory(),
)
# Dodaj kontekst komponentu
logger = structlog.get_logger().bind(
component="weblama",
version="1.0.0"
)
return logger
CLI PyLama udostępnia następujące komendy do zarządzania logami:
# Przeglądaj logi z filtrowaniem
devlama logs --service weblama --level info --limit 50
# Przeglądaj logi ze wszystkich usług
devlama logs --service all
# Zbieraj logi z określonej usługi
devlama collect-logs --services weblama
# Zbieraj logi ze wszystkich usług
devlama collect-logs
# Uruchom daemon kolektora logów
devlama log-collector start --interval 300
# Sprawdź status kolektora logów
devlama log-collector status
# Zatrzymaj daemon kolektora logów
devlama log-collector stop
WebLama integruje się z systemem logowania w następujących punktach:
weblama/weblama/logging_config.py
weblama/Makefile
i weblama/scripts/start_log_collector.py
logs/weblama.log
APILama integruje się z systemem logowania w następujących punktach:
apilama/apilama/logging_config.py
apilama/apilama/middleware/logging_middleware.py
logs/apilama.log
PyLama integruje się z systemem logowania w następujących punktach:
devlama/devlama/logging_config.py
devlama/devlama/models.py
logs/devlama.log
BEXY integruje się z systemem logowania w następujących punktach:
bexy/bexy/logging_config.py
bexy/bexy/sandbox.py
logs/bexy.log
PyLLM integruje się z systemem logowania w następujących punktach:
getllm/getllm/logging_config.py
getllm/getllm/models.py
logs/getllm.log
Jeśli logi z komponentu nie pojawiają się w LogLama, sprawdź:
Jeśli kolektor logów nie działa prawidłowo:
# Sprawdź status kolektora
devlama log-collector status
# Zatrzymaj i uruchom ponownie kolektor
devlama log-collector stop
devlama log-collector start --interval 300
# Sprawdź logi kolektora
cat logs/log_collector.log
LogLama zawiera narzędzia diagnostyczne do rozwiązywania problemów:
# Uruchom diagnostykę LogLama
python -m loglama.cli.main diagnose
# Sprawdź zdrowie systemu logowania
python -m loglama.cli.main diagnose -c health
# Wygeneruj kompleksowy raport diagnostyczny
python -m loglama.cli.main diagnose -c report -o raport_diagnostyczny.json