2010-03-06 2 views
13

모든 애플리케이션 로그를 중앙 집중식 (이상적으로는 거의 실시간으로)하고 싶습니다. 우리는 Log4 Appender를 사용할 것입니다. 어느 사용해야합니까 :많은 자바 애플 리케이션을위한 중앙 집중식 로깅 : Syslog 대 JMS vs Http vs 로컬 파일

  1. 보내기 로그 이벤트는 JMS 대기열
  2. 시스템 로그는/시스템 로그 - ng를 LocalFile에에
  3. 쓰기 및 로그를 복제하기 위해 rsync를 (모든 삼초)를 사용
  4. 수행합니다에 중앙 집중식 REST Http 서비스에 대한 POST

어떤 카드를 사용하고 있습니까?

답변

3

귀하의 요구 사항에 따라 다릅니다. 로그 메시지가 대기열에 쓰여지 자마자 로그 조작이 리턴 될 수 있기 때문에 (JMS에서와 같이) 대기열에 로깅하면 옵션의 유연성이 극대화됩니다. 그런 다음 다른 프로세스가 대기열에서 로그 메시지를 가져 와서 원하는 로깅 저장소 (데이터베이스, 파일 시스템 등)에 쓸 수 있습니다.

로그 메시지가 로깅되는 시스템보다 약간 지연되지만, 파일 기반 로깅을 사용하는 경우에도 거의 항상 그렇습니다.

+0

당신이 원격 시스템 로그에 문자열을 보내는 것은 JMS + WMQ 큐보다 빠른 것이라고 말할 것 그것에서 로그인하는 큐 및 전용 소비자 스레드를 사용 AsyncAppender이 있습니까? syslog-ng가 메시지 수신을 확인한 다음 이벤트에 대한 다른 라우팅을 수행 할 수 있음을 알고 있습니다 (파일, db, 이메일 등). – Aerosteak

+0

간단한 답은 모르겠지만 syslog가 있음을 알 수 있습니다. 영구 메시지를 사용하는 JMS 솔루션과 비교할 경우 더 빠릅니다. 영속 메시지 (로그 메시지 유실 가능성)가 필요하지 않으면 JMS를보다 빠르게 만들 수 있습니다. 결국 속도가 필요한 경우 성능을 측정해야합니다. – SteveD

1

Log4 (Log4j?)에 익숙하지 않지만 데이터베이스 애펜더가 있습니까? 이렇게하면 필요한 중앙 집중화 기능이 제공되며 로그를 복제 할 필요가 없습니다.

0

정말 대단히 많이 달라집니다. syslog는 애플리케이션 로깅에 적합한 선택이라고 생각하지 않지만 인프라 로그에 더 적합합니다. 너무 많은 세부 사항을 알지 못하면 나열된 네 가지 옵션이 모두 괜찮아 보입니다. this을 사용합니다.

2

과도 할 수도 있지만 Splunk을 보셨나요? Java 애플리케이션의 경우, Log4J 또는 SLF4J를 사용하여 파일에 로그 한 다음 Splunk가 로그를 집계하여 검색 가능하게 만들 수 있습니다.