2011-08-01 3 views
0

서문을 자바 서비스의 단일 사용자에 대한 로깅을 활성화합니다. 이것은 기본적으로 사용자가 휴대 전화를 사용하여 Google 서비스/서버에 연결하고 사용자가 인증되면 데이터 전송이 이루어지는 모바일 유틸리티 서비스입니다. 이 서비스는 데이터 센터에서 실행되며로드 밸런서 등의 요청에 따라 앱 서버가 제공됩니다. 우리 애플리케이션의 실시간 업데이트는 실제로 서버를 완전히 다운시키지 않고 서버를 추가 및 제거하고로드 밸런서가 요청을 우회하여 발생합니다.어떻게 런타임에

시나리오 - 로그에서

, 나는 서비스에 모든 시간을 연결 최소한 만 사용자가 있다는 것을 이해할 수있다. 따라서 업그레이드를 위해 서비스를 중단하는 것은 실용적이지 않습니다. 나는 자바의 API (HashMap, ArrayList 등)를 사용하여 메모리 캐시를 많이 사용한다. 나는 아직 memcache와 같은 캐싱 프레임 워크를 사용하고 있습니다. 또한 사람들은 수많은 핸드폰을 사용하여이 서비스에 연결하며 모든 서비스를 지원하기가 매우 어렵습니다.

사용 사례

서비스가 그들을 위해 작동하지 않는 사용자 불만, 우리는 그의 말에 무엇이 잘못되었는지 찾아 그를 위해 로깅 (및 다른 사람을위한 혼자하지 HIM)을 활성화해야

. 클라이언트는 핸드폰이며 온라인 서비스이므로 서버에 로그를 활성화 할 수는 없으며 모든 사용자가 로그를 사용할 수 있으며 로그는 즉시 롤오버되거나 사용자의 데이터는 로거가 쏟아내는 텍스트 영역에서 쉽게 추적 할 수 있습니다. 또한 스크린 샷을 요청할 수 없습니다 (일부 휴대 전화에는이 기능이 있지만 대다수가 부족하고 문제를 일으키는 휴대폰입니다). 클라이언트 측 오류 때문에 모바일 클라이언트에서 어떤 일이 발생하는지 볼 수 없습니다. 따라서 라이브 서버에서 모든 작업을 수행해야하며 다른 사용자는 영향을받지 않습니다.

나는 (그들이 실제로 서버에 연결되어있는) 의지에 따라 그들에 대한 로깅을 가능 런타임

간단한에서 몇 가지 매개 변수를 제공하여 하나의 사용자에 대한 로깅을 활성화 할 수있는 다른 방법은 무엇인가 내가 급하게 시도한 것

1) 처음에는 비어있는 하나의 열 테이블을 유지하고 일부 사용자가 서비스가 작동하지 않는다고 말하면 테이블에 사용자 이름을 추가합니다. 특정 간격으로 테이블을 스캔하는 스레드는 사용자 이름을 얻고 사용자 특정 로그를 인쇄하기 시작합니다. 로그가 인쇄되면 항목을 제거하십시오. 하지만 스레드가 올 때까지 기다려야합니다. 정책으로도 요청 - 응답 스레드 이외의 다른 스레드를 생성하거나 실행하지 않아야합니다.

2) 빈 파일을 보관하고 그 안에 항목을 추가하고 포인트 1

3) 관리자 인증 된 개인 서블릿에 요청을 실행에 언급 된 DB 테이블에서와 동일한 방법에 따라 (사용자는이 액세스 할 수 없습니다 내부 IP는 허용됨) 로그 할 사용자 이름을 param-value로 전달한 다음 나중에 다시 호출하여 사용자를 제거하십시오.

기타 다른 방법?

추신. java.util.logging 사용.true로 지역

  • 세트 스레드를 기록 할 필요가 사용자에 속하는 경우 요청 로거 로거

  • 답변

    0

    높은 수준의 개요

    • 시작은 감지합니다.
    • 로거는 로컬 스레드에서 현재 레벨을 확인해야합니다.
    • 프로세스 요청 ...
    • 끝 맑은 스레드 로컬.
    관련 문제