2012-04-11 2 views
3

나는이 질문을 가지고있다. 들어오는 모든 요청을 로깅하기위한 내 스프링 기반 REST API 서버를위한 작은 로깅 기능을 구현하고 있습니다.1000 명 이상의 사용자가이 API를 사용하여 블로킹 I/O 로거와 함께 사용할 것을 기대하고 있습니다. 모든 것을 느리게 할 것입니다. 문제를 해결하기위한 두 가지 접근 방법이 있습니다. 1. 메모리 내 arrylist를 사용하여 비동기 로거를 만듭니다. 그런 다음 스프링 스케줄러를 사용하여이를 정기적으로 로그 파일로 내 보냅니다. 2. JMS를 사용하여 로그를 대기열로 보냅니다. 큐가 비동기 적으로 로깅을 처리하게하십시오.비동기 로거 (봄)

누구나 봄에이 작업을 했습니까? 비록 내가 옵션 2에 대한 것이지만, 이것을하는 더 좋은 방법이 있습니까? 전문가의 조언이 필요합니다. 모두에게 감사드립니다!

추가 정보 -이 REST API가 프런트 엔드 RoR 앱에서 사용되기 때문에 동기 로깅이 병 목이 될 것입니다. 그래서 한 세션의 사용자는 분명히 매우 자주 발생하는 100 건의 API 호출을 초래할 것입니다. POST에서 전송 된 JSON과 함께 실제 요청을 로깅합니다.

+0

기본 솔루션을 사용하지 않는 이유는 무엇입니까? 목수가 자신의 망치를 만들고, 자신의 손톱을 만들고, 자신의 도구 벨트를 바느냐, 아니면 수년간의 기존 R & D를 활용 한 잘 알려진 회사가 만든 도구를 사용하여 집을 짓기를 원하십니까? – jmort253

+0

동기 로깅이 병목 현상이 될 수 있습니다. 대개 느려지는 경우 로깅 양을 줄여야합니다. 그래서 DEBUG, INFO 등의 레벨이 있습니다. – artbristol

+0

감사합니다. 그냥 동기화 로깅이 병목 현상이라고 생각하는 이유에 대한 quesiton을 업데이트했습니다. – gotz

답변

3

누구든지 봄에이 작업을 수행 한 사람이 있습니까? 그래서 이상하게

하지, 그래 - Asynchronous Logging Using Spring

이 기사는 당신이 어떤 로그 이벤트가 손실되지 않도록하려면, JMS 갈 방법이 될 것이라고 언급 - 그렇지 않으면 비동기로 고집이 높은 대한 의미가 있습니다 볼륨 로깅.

+0

감사합니다. Ryan. 이것은 흥미로운 것 같습니다. 그것을 해결할 것입니다. – gotz

0

자신 만의 로거를 직접 만들려면 akka을 살펴 보는 것이 좋습니다. 설정하는 것이 JMS보다 훨씬 쉽습니다.

로컬로 (로컬 컴퓨터의 모든 CPU 코어 사용) 또는 원격 에이전트에서 사용할 수도 있습니다.

+0

예. 봄 지원이있는 것처럼 보입니다. 감사. – gotz

+0

@nice_ekito이 주제에 대한 학습 자료가 있습니까? – svlada

+0

아니, 로깅을위한 특별한 것, 공식 문서 : http://doc.akka.io/docs/akka/2.1.0/ –