Как включить ведение журнала для одного пользователя в службе Java во время выполнения - PullRequest
0 голосов
/ 01 августа 2011

Преамбула -

Я запускаю онлайн-приложение Java (Tomcat-> Java-> Mysql) в качестве SAAS (Software As A Service).В основном это мобильная сервисная служба, где пользователь подключается к нашему сервису / серверу с помощью своего мобильного телефона, и передача данных происходит после аутентификации пользователя.Служба запускается в центре обработки данных, где серверы приложений обслуживают запросы с помощью балансировщика нагрузки и т. Д.Активные обновления нашего приложения происходят путем добавления и удаления серверов, перенаправления запросов балансировщиком нагрузки без фактического отключения службы.

Сценарий -

Из журналов я могу понять, что к услуге постоянно подключено не менее десяти тысяч пользователей.Поэтому отключение сервиса для обновления нецелесообразно.Я использую много кеша в памяти, используя API Java (например, HashMap, ArrayList и т. Д.).Я еще не использовал фреймворки для кэширования, такие как memcache или около того.Кроме того, люди подключаются к этой услуге, используя множество мобильных телефонов, и нам очень трудно поддерживать их все.

Вариант использования

Когда пользователь жалуется, что служба не работает для него, нам нужно включить ведение журнала для него (И ЕГО ОДНОГО, А НЕ ДЛЯ ДРУГИХ), чтобы найти, что идет не так в егоконец.Помните, что его клиент - мобильный телефон, и поскольку это онлайн-сервис, мы не можем просто включить журналы на нашем сервере, и он будет включен для всех пользователей, и наши журналы будут перенесены в кратчайшие сроки, или данные пользователя не будутлегко прослеживается в гамме текста, полученного регистратором.Также я не могу запросить снимок экрана (хотя у некоторых мобильных телефонов есть эта функция, у большинства ее нет, и именно они создают проблемы) из-за ошибок на стороне клиента, я не могу увидеть, что происходит на их мобильном клиенте.Таким образом, все должно быть сделано на реальном сервере, в то время как другие пользователи остаются неизменными.

Какими различными способами я могу включить ведение журнала только для одного пользователя, указав какой-либо параметр во время выполнения, который позволяет регистрировать их по желанию (когда они фактически подключены к серверу)

Простые вещи, которые я спешно пытался

1) Держите таблицу из одного столбца, которая изначально пуста, и когда какой-то пользователь говорит, что служба у него не работает, добавьте его имя пользователя в таблицу,Поток, который просматривает таблицу с определенным интервалом, получит имя пользователя и начнет печатать определенные журналы пользователя.Удалите запись после печати журналов.Но мне нужно подождать, пока не придет нить и не выполнит действие.Также как политика, мы не должны порождать / запускать другие потоки, кроме потока запрос-ответ.

2) Сохраните пустой файл и добавьте в него запись и следуйте так же, как в таблице БД, упомянутой в пункте 1

3) Отправьте запрос в аутентифицированный администратором частный сервлет (пользователи не могутполучить доступ к этому, разрешены только внутренние IP-адреса) и передать имя пользователя, которое должно быть зарегистрировано как значение параметра, а затем снова вызвать его, чтобы удалить пользователя

любыми другими / лучшими способами?

PS.Использование java.util.logging.Logger в качестве логгера

1 Ответ

0 голосов
/ 01 августа 2011

Обзор высокого уровня

  • начало запроса на обнаружение, если принадлежит пользователям, которым необходимо войти в систему
  • установить локальный поток в true.
  • регистратор должен проверить локальный поток на текущий уровень.
  • обработать запрос ...
  • конец запроса очистить локальный поток.
...