Как регистрировать сообщения в веб-приложении Java и просматривать журналы по сеансу, запросу, в дереве?
В настоящее время в журналах моего веб-приложения есть большие текстовые файлы, полные сообщений. Их сложно использовать при отладке и анализе. Я представляю себе следующее, и мне интересно, оно уже существует или мне нужно его построить?
Я хочу, чтобы сообщения журнала были связаны с текущим запросом и сеансом, чтобы я мог просматривать журнал в пользовательском интерфейсе как разборное дерево. На итоговом уровне я могу просматривать по пользователю / сеансу и по тем, которые видят запросы, общее время, затраченное на запрос. Оттуда я могу углубиться в запрос и просмотреть сообщения журнала на более глубоких уровнях. Запросы, содержащие предупреждения или ошибки, будут выделены или выбраны с помощью фильтра.
Я также хочу, чтобы система была расширяемой, а не черным ящиком. Я хочу подключить асинхронные задачи к сеансам / запросам, даже если эти вещи происходили в других потоках. И я хочу интегрировать это с ошибками JavaScript на стороне клиента. Это еще одна проблема, но дело в том, что мне нужно что-то расширяемое.
1 ответ
Я использую следующую схему:
- Мой шаблон Log4j использует MDC -% d {ISO8601}% p [% X {REQUEST_ID}] [% X {SESSION_ID}] [% X {USER}]% класс% m% n
В приложении для каждого запроса я использую метод MDC.put() для установки REQUEST_ID, SESSION_ID, USER
MDC.put("SESSIONION_ID", sessionId); MDC.put("REQUEST_ID", requestId); MDC.put("USER", user);
Я определил этот шаблон журнала в OtrosLogViewer. Ваше определение шаблона журнала должно выглядеть следующим образом:
type=log4j pattern=TIMESTAMP LEVEL [PROP(REQUEST_ID)][PROP(SESSION_ID)][PROP(USER)] CLASS MESSAGE dateFormat=yyyy-MM-dd HH:mm:ss,SSS name="MyAppLog" charset=UTF-8
Я открываю журналы с OtrosLogViewer, который позволяет мне легко фильтровать по свойству REQUEST_ID, SESSIONS_ID или USER_ID. Он также может фильтровать журналы по классу, дате, потоку и т. Д. Журналы могут быть открыты с удаленных серверов с использованием SFTP, FTP, SMB
Кроме того, вы можете интегрировать OtrosLogViewer с вашим Intellij. Смотрите пример на Youtube: https://www.youtube.com/watch?v=SbOFF56_7-A?hd=1
Отказ от ответственности: я являюсь автором OtrosLogViewer