Структурированное логирование
Отправляйте структурированные логи в StatusRadar через OTLP.
Обзор
OTLP-логи обеспечивают:
- Структурированные поля (JSON)
- Уровни важности (severity)
- Корреляцию с трейсами
- Точность временных меток
- Богатые возможности поиска
Базовое логирование
Node.js
const { logs } = require('@opentelemetry/api-logs');
const logger = logs.getLogger('my-service');
logger.emit({
severityText: 'INFO',
body: 'User logged in',
attributes: {
'user.id': '12345',
'user.email': '[email protected]',
'login.method': 'password'
}
});
Python
from opentelemetry._logs import get_logger
logger = get_logger(__name__)
logger.emit(
severity_text='INFO',
body='User logged in',
attributes={
'user.id': '12345',
'user.email': '[email protected]',
'login.method': 'password'
}
)
Уровни важности
TRACE— детальная отладкаDEBUG— информация для разработкиINFO— штатные операцииWARN— предупрежденияERROR— события ошибокFATAL— критические сбои
Корреляция с трейсами
Связывайте логи с трейсами:
const { trace, context } = require('@opentelemetry/api');
const span = tracer.startSpan('process_payment');
const spanContext = span.spanContext();
logger.emit({
body: 'Payment processed',
attributes: {
'trace_id': spanContext.traceId,
'span_id': spanContext.spanId
}
});
Поиск и фильтрация
Dashboard → Observability → Apps → Logs
Синтаксис поиска:
level:ERROR
user.id:12345
message:"payment failed"
timestamp:[2024-01-01 TO 2024-01-31]
Лучшие практики
✅ Используйте структурированные атрибуты вместо подстановки строк ✅ Включайте trace/span ID для корреляции ✅ Добавляйте пользовательский контекст ✅ Используйте подходящие уровни важности
❌ Не логируйте чувствительные данные (пароли, токены) ❌ Не логируйте высокочастотные события (используйте метрики) ❌ Не включайте крупные payload-ы