- Создана система отслеживания миграций (MigrationRepository, таблица migrations) - Добавлен скрипт apply_migrations.py для автоматического применения миграций - Созданы CI/CD пайплайны (.github/workflows/ci.yml, deploy.yml) - Обновлена документация по миграциям в database-patterns.md - Миграции применяются автоматически при деплое в продакшн
46 lines
1.3 KiB
Python
46 lines
1.3 KiB
Python
import datetime
|
|
import os
|
|
import sys
|
|
|
|
from loguru import logger
|
|
|
|
# Remove default handler
|
|
logger.remove()
|
|
|
|
# Check if running in Docker/container
|
|
is_container = os.path.exists('/.dockerenv') or os.getenv('DOCKER_CONTAINER') == 'true'
|
|
|
|
if is_container:
|
|
# In container: log to stdout/stderr
|
|
logger.add(
|
|
sys.stdout,
|
|
format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {name} | {line} | {message}",
|
|
level=os.getenv("LOG_LEVEL", "INFO"),
|
|
colorize=True
|
|
)
|
|
logger.add(
|
|
sys.stderr,
|
|
format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {name} | {line} | {message}",
|
|
level="ERROR",
|
|
colorize=True
|
|
)
|
|
else:
|
|
# Local development: log to files
|
|
current_dir = os.path.dirname(os.path.abspath(__file__))
|
|
if not os.path.exists(current_dir):
|
|
os.makedirs(current_dir)
|
|
|
|
today = datetime.date.today().strftime('%Y-%m-%d')
|
|
filename = f'{current_dir}/helper_bot_{today}.log'
|
|
|
|
logger.add(
|
|
filename,
|
|
rotation="00:00",
|
|
retention=f"{os.getenv('LOG_RETENTION_DAYS', '30')} days",
|
|
format="{time:YYYY-MM-DD at HH:mm:ss} | {level} | {name} | {line} | {message}",
|
|
level=os.getenv("LOG_LEVEL", "INFO"),
|
|
)
|
|
|
|
# Bind logger name
|
|
logger = logger.bind(name='main_log')
|