2010-05-21 6 views
8

중앙 Java 컨트롤러가 C++, Java 또는 Python으로 작성된 분석 프로세스를 시작하는 시스템이 있습니다 (대부분 C++입니다) . 이 모든 프로세스는 현재 동일한 서버에서 실행됩니다.교차 언어 (Java, C++, Python) 시스템에 사용할 로깅 라이브러리

  • 에 제안 당신에게 무엇 모든 프로세스가
  • 쓸 수있는에 중앙 로그를 생성 무엇 미래에 내가 다른 서버로 일부 공정을 밀어합니다. 분산 로깅은 어떻게 지원합니까?

감사합니다.

답변

1

Apache는 cross-platform logging libraries입니다.이 API를 사용하면 유사한 API를 사용하여 다양한 프로그래밍 언어에서 로그 할 수 있습니다. 불행히도 그들은 파이썬 API를 가지고 있지 않지만, log4cpp와 Boost.Python을 사용하여 파이썬 API를 사용할 수 있어야합니다.

내가 진행중인 프로젝트는 이러한 라이브러리 중 하나를 사용하여 데이터베이스에 로깅합니다. 이로 인해 로그 메시지를 중앙 집중식으로 "분산 로깅"할 수 있습니다. 나는 이것에 대한 팬이 아니라는 것을 인정해야한다. 내가 작업하는 또 다른 프로젝트는 이러한 라이브러리 중 하나를 사용하여 기본 로깅 기능에 로깅합니다. Windows 이벤트 로그에는 분산 로깅을위한 몇 가지 기능이 있지만 AFAIK syslog에는 없습니다.

경험이 없지만 프로젝트가 더 적합 할 수도 있습니다 (Facebook's Scribe 프로젝트). 이 기능 세트는 Python API를 포함하여 요구 사항을 충족합니다. 불행히도 Windows에서는 C++에서 작동하지 않는 Thrift를 사용합니다 (즉, Thrift 컴파일러는 UNIX에서만 작동하는 C++ 코드를 생성합니다). Cygwin을 사용하여이 문제를 해결할 수는 있지만 그 방법이 가능할 것이라고 약속 할 수는 없습니다.

+1

syslog는 분산 로깅을 지원합니다. 고전적인 syslogd는'@ hostname' 구문을 사용하여 다른 호스트로 메시지 전달을 지원합니다. syslog.conf 맨 페이지의 "원격 컴퓨터"섹션을 참조하십시오. http://linux.die.net/man/5/syslog.conf –

+0

필 기사는 매우 흥미로 보입니다. – recipriversexclusion

5

Posix에서는 syslog이고 Windows에서는 이벤트 로그 인 플랫폼의 기본 로거를 사용하는 것이 좋습니다.

C++의 경우 플랫폼에서 기본 호출을 사용할 수 있습니다.

저는 Python이 Posix에서 syscall 래퍼를 가지고 있으며, PyWin32 extension에 이벤트 로그에 대한 래퍼가 있다는 것을 알고 있습니다. 나는 누군가가 Java 래퍼를 작성했다고 가정한다. 시스템 로그 및 여러 파일에 관한

업데이트

. syslog는 시설 개념을 지원합니다. 시설을 통해 서로 다른 로그를 다른 파일로 이동할 수 있습니다. 유감스럽게도 시설은 미리 정의되어 있습니다. 반면에 일반적인 것들은 8 개가 있습니다. LOG_LOCAL0에서 LOG_LOCAL7 사이에는 임의의 기능을 정의 할 수 없습니다.

또한 각 시설/레벨에 대한 로그 메시지의 경로를 결정하는 것은 syslog 데몬에 달려 있습니다. 각 기능을 다른 파일로 보내려면 syslog 데몬 구성을 조정해야 할 수도 있습니다.

+0

답변 해 주셔서 감사합니다.같은 시스템에 별도의 syslog 로그를 생성 할 수 있습니까? 우리는 서로 다른 서비스를 가지고 있으며 각각은 여러 프로세스를 가지고 있으며 로그를 이상적으로 분리하고 싶습니다. – recipriversexclusion

+0

@recipriversexclusion - 댓글에 대한 답변을 업데이트했습니다. –

+0

syslog에 대한 또 다른 좋은 점은 모든 합리적인 구현이 이미 네트워크를 통해 다른 컴퓨터로 로그 메시지를 보내는 방법을 알고 있다는 것입니다. –

1

Apache log4cxx 또는 Apache log4j을 사용하고 싶습니다. 효율적입니다. 로그를 모듈화하는 Logger 계층 구조가 있습니다. 이제는 입증 된 기술입니다. 현재 콘솔, 파일, GUI 구성 요소, 원격 소켓 서버, NT 이벤트 로거 및 원격 UNIX Syslog 데몬에 대한 애 퍼처가 있습니다. 비동기 적으로 로그하는 것도 가능합니다.

어떻게 분산 로깅을 지원합니까? 예를 들어 원격 소켓 서버를 사용합니다.