feat: улучшена классификация логов PostgreSQL
- Добавлена поддержка LOG: логов PostgreSQL как INFO уровень (зеленый цвет) - Добавлена поддержка FATAL: логов PostgreSQL как ERROR уровень (красный цвет) - Исправлена классификация логов в формате [номер] LOG: и [номер] FATAL: - Убраны отладочные console.log сообщения - Обновлены Dockerfile и docker-compose.yml - Перемещен start.sh в папку app/ Автор: Сергей Антропов Сайт: https://devops.org.ru
This commit is contained in:
35
app/start.sh
Executable file
35
app/start.sh
Executable file
@@ -0,0 +1,35 @@
|
||||
#!/bin/bash
|
||||
|
||||
# LogBoard+ - Скрипт запуска
|
||||
# Автор: Сергей Антропов
|
||||
# Сайт: https://devops.org.ru
|
||||
|
||||
set -e
|
||||
|
||||
# Получаем настройки из переменных окружения
|
||||
DEBUG_MODE=${DEBUG_MODE:-false}
|
||||
LOGBOARD_PORT=${LOGBOARD_PORT:-9001}
|
||||
|
||||
echo "LogBoard+ Starting..."
|
||||
echo "Port: $LOGBOARD_PORT"
|
||||
echo "Debug mode: $DEBUG_MODE"
|
||||
|
||||
# Определяем параметры запуска в зависимости от режима отладки
|
||||
if [ "$DEBUG_MODE" = "true" ]; then
|
||||
echo "Starting in DEBUG mode with auto-reload and Swagger docs..."
|
||||
echo "Swagger UI: http://0.0.0.0:$LOGBOARD_PORT/docs"
|
||||
echo "ReDoc: http://0.0.0.0:$LOGBOARD_PORT/redoc"
|
||||
|
||||
exec uvicorn app:app \
|
||||
--host 0.0.0.0 \
|
||||
--port $LOGBOARD_PORT \
|
||||
--reload \
|
||||
--log-level debug
|
||||
else
|
||||
echo "Starting in PRODUCTION mode..."
|
||||
|
||||
exec uvicorn app:app \
|
||||
--host 0.0.0.0 \
|
||||
--port $LOGBOARD_PORT \
|
||||
--log-level info
|
||||
fi
|
||||
@@ -399,6 +399,21 @@ function classify(line){
|
||||
return 'err';
|
||||
}
|
||||
|
||||
// FATAL - ищем точное совпадение уровня логирования (раскрашиваем как ERROR)
|
||||
if (/\s- FATAL -|\s\[fatal\]|level=fatal/.test(l)) {
|
||||
return 'err';
|
||||
}
|
||||
|
||||
// PostgreSQL FATAL - специальная проверка для FATAL логов PostgreSQL
|
||||
if (/\[\d+\]\s+FATAL:/i.test(l)) {
|
||||
return 'err';
|
||||
}
|
||||
|
||||
// Простая проверка для любых строк содержащих "FATAL:"
|
||||
if (l.includes('fatal:')) {
|
||||
return 'err';
|
||||
}
|
||||
|
||||
// WARNING - ищем точное совпадение уровня логирования
|
||||
if (/\s- WARNING -|\s\[warn\]|level=warn/.test(l)) {
|
||||
return 'warn';
|
||||
@@ -409,11 +424,37 @@ function classify(line){
|
||||
return 'ok';
|
||||
}
|
||||
|
||||
// LOG - ищем точное совпадение уровня логирования (раскрашиваем как INFO)
|
||||
if (/\s- LOG -|\s\[log\]|level=log|^log:/i.test(l)) {
|
||||
return 'ok';
|
||||
}
|
||||
|
||||
// PostgreSQL LOG - специальная проверка для логов PostgreSQL
|
||||
if (/\[\d+\]\s+LOG:/i.test(l)) {
|
||||
return 'ok';
|
||||
}
|
||||
|
||||
// Простая проверка для любых строк содержащих "LOG:"
|
||||
if (l.includes('log:')) {
|
||||
return 'ok';
|
||||
}
|
||||
|
||||
// Дополнительные проверки для других форматов (только если не найдены точные совпадения)
|
||||
if (/\bdebug\b/i.test(l)) return 'dbg';
|
||||
if (/\berror\b/i.test(l)) return 'err';
|
||||
if (/\bfatal\b/i.test(l)) {
|
||||
return 'err'; // FATAL также раскрашиваем как ERROR
|
||||
}
|
||||
if (/\bwarning\b/i.test(l)) return 'warn';
|
||||
if (/\binfo\b/i.test(l)) return 'ok';
|
||||
if (/\blog\b/i.test(l)) {
|
||||
return 'ok'; // LOG также раскрашиваем как INFO
|
||||
}
|
||||
|
||||
// Отладка для неклассифицированных логов
|
||||
if (l.includes('log:') || l.includes('fatal:')) {
|
||||
console.log('Unclassified LOG/FATAL line:', line);
|
||||
}
|
||||
|
||||
return 'other';
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user