2011-03-21 4 views
2

Ruby (sinatra) 응용 프로그램과 함께 MongoDB를 사용하고 있습니다. 현재 모든 로깅은 로컬 파일에 수행됩니다. 나는 대신 로그 메시지를 MongoDB 컬렉션에 저장하려고한다. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까?MongoDB 컬렉션 (Ruby)에 로그인

답변

1

그냥 않는 오픈 소스 프로젝트가있다 : 파일에서

https://github.com/customink/central_logger

+0

문서는이 레일 보석임을 암시하는 것, 그리고 내가 내 질문에 말했듯이, 나는 레일을 사용하지 않는 블로그 10gen합니다. 비 레일 환경에서 이것을 사용 했습니까? 그렇다면 해킹이 작동하려면 얼마나 많은 해킹이 필요합니까? –

1
  1. 데이터를로드합니다.
  2. 로그를 mongodb 컬렉션에 삽입하십시오 (here 자세한 루비 드라이버 튜토리얼).
  3. 파일에 쓰는 대신 로그 데이터가 mongodb 컬렉션에 로그를 삽입하는 방식입니다.

또한 capped collections 로깅과 같은 작업에 적합합니다.

+0

바로. 모든 로깅 라인을 다시 작성하지 않고 3 단계를 수행하려면 어떻게해야합니까? –

1

MongoDB를 로깅 할 때 쓰기 처리량이 높습니다. MongoDB의 삽입은 기본적으로 fire-and-forget 스타일이지만 많은 insert()를 호출하면 쓰기 잠금 경합이 많이 발생합니다. 이로 인해 응용 프로그램 성능이 저하되고 독자가 저장된 로그를 집계/필터링하지 못할 수 있습니다.

하나의 솔루션은 , Logstash 또는 Flume과 같은 로그 수집기 프레임 워크를 사용할 수 있습니다. 이 데몬은 모든 응용 프로그램 노드에서 시작되며 응용 프로그램 프로세스에서 로그를 가져옵니다.

Fluentd plus MongoDB

그들은 비동기 로그 버퍼와 같은 다른 시스템에 데이터를 써 MongoDB를/PostgreSQL을/등이 훨씬 더 효율적인 응용 프로그램에서 직접 작성하는 것보다, 그래서 쓰기가 일괄하여 수행됩니다. 이 링크는 Ruby 프로그램에서 Fluentd에 로그를 저장하는 방법을 설명합니다. Fluentd: Data Import from Ruby Applications

  • Fluentd + MongoDB: The Easiest Way to Log Your Data Effectively