[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-logirovanie-chto-takoe-structured-logging-i-zachem-ono-nuzhno":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":16,"progress":17,"seo":18},1302,"chto-takoe-structured-logging-i-zachem-ono-nuzhno",43,"logirovanie","Логирование","📝","Что такое Structured Logging и зачем оно нужно?","Structured Logging — логирование в машиночитаемом формате (обычно JSON) вместо plain text. Позволяет эффективно искать, фильтровать и анализировать логи в системах агрегации по отдельным полям.\n\n### Plain text vs Structured (JSON)\n\n| Аспект | Plain text | Structured (JSON) |\n|--------|-----------|-------------------|\n| Читаемость человеком | Высокая | Низкая без инструментов |\n| Машинный парсинг | Сложный (regex) | Нативный (по полям) |\n| Фильтрация | По подстроке | По конкретным полям (`orderId=123`) |\n| Интеграция с ELK\u002FLoki | Требует grok-паттернов | Из коробки |\n| Использование | Dev-среда | Production |\n\nPlain text:\n```\n2026-04-22 10:15:32 INFO OrderService - Заказ создан: orderId=12345, userId=678, amount=99.99\n```\n\nStructured (JSON):\n```json\n{\n  \"timestamp\": \"2026-04-22T10:15:32.456Z\",\n  \"level\": \"INFO\",\n  \"logger\": \"com.example.OrderService\",\n  \"message\": \"Заказ создан\",\n  \"orderId\": 12345,\n  \"userId\": 678,\n  \"amount\": 99.99,\n  \"requestId\": \"a1b2c3d4\"\n}\n```\n\n### Настройка JSON-логирования в Logback\n\nИспользуется Logstash encoder:\n\n```xml\n\u003C!-- logback-spring.xml -->\n\u003Cappender name=\"JSON\" class=\"ch.qos.logback.core.ConsoleAppender\">\n    \u003Cencoder class=\"net.logstash.logback.encoder.LogstashEncoder\">\n        \u003CincludeMdcKeyName>requestId\u003C\u002FincludeMdcKeyName>\n        \u003CincludeMdcKeyName>userId\u003C\u002FincludeMdcKeyName>\n    \u003C\u002Fencoder>\n\u003C\u002Fappender>\n```\n\nЗависимость в `pom.xml`:\n```xml\n\u003Cdependency>\n    \u003CgroupId>net.logstash.logback\u003C\u002FgroupId>\n    \u003CartifactId>logstash-logback-encoder\u003C\u002FartifactId>\n    \u003Cversion>7.4\u003C\u002Fversion>\n\u003C\u002Fdependency>\n```\n\n### Добавление structured полей в код\n\n```java\nimport static net.logstash.logback.argument.StructuredArguments.*;\n\nlog.info(\"Заказ создан\", kv(\"orderId\", orderId), kv(\"amount\", amount));\n\u002F\u002F JSON: {\"message\":\"Заказ создан\",\"orderId\":12345,\"amount\":99.99}\n\n\u002F\u002F SLF4J 2.x fluent API:\nlog.atInfo()\n    .addKeyValue(\"orderId\", orderId)\n    .addKeyValue(\"amount\", amount)\n    .log(\"Заказ создан\");\n```\n\n### Частые ошибки\n\n- JSON-логи в dev-среде — нечитаемо для человека; используйте профили (plain text для dev, JSON для prod)\n- Логирование огромных объектов — `log.info(\"Request: {}\", requestBody)` с большим JSON замедляет систему\n- Не добавлять бизнес-контекст — JSON без `orderId`, `userId` не полезнее plain text\n\n### Как используется в 2026\n\n- Structured logging — стандарт для production в Kubernetes\u002Fcloud\n- Grafana Loki \u002F Elasticsearch — основные системы для поиска по structured логам\n- Spring Boot 3.x поддерживает structured logging из коробки через `logging.structured.format.console=logstash`\n- MDC-данные автоматически включаются в JSON-вывод\n\n> **На собеседовании:** объясните, почему plain text недостаточен для production — невозможно эффективно фильтровать по полям. Частая ошибка — не упомянуть, что в dev-среде по-прежнему удобнее plain text (разные профили).","","middle",[15],"logging",[],null,{"title":19,"description":20,"ogTitle":19,"ogDescription":21,"keywords":22,"schemaAnswer":23,"featuredSnippetReady":24},"Что такое Structured Logging и зачем оно нужно? — Gymterview","Structured Logging — логирование в машиночитаемом формате (обычно JSON) вместо plain text. Позволяет эффективно искать, фильтровать и анализировать логи в систе","Structured Logging — логирование в машиночитаемом формате (обычно JSON) вместо plain text. Позволяет эффективно искать, ",[15,13],"Structured Logging — логирование в машиночитаемом формате (обычно JSON) вместо plain text. Позволяет эффективно искать, фильтровать и анализировать логи в системах агрегации по отдельным полям.",true]