2009-03-22 2 views
2

우리의 RCP 응용 프로그램은 공정한 비트를 기록하지만 INFO 이상 만 콘솔에 출력합니다. windows/linux에서 이것은 괜찮습니다. 그러나 OSX에서는 모든 로깅이 syslogd로 전달되는 것으로 보이는데, syslogd는 로깅 할 것인지 아닌지를 결정합니다. 이는 수천 개에서 수천 개의 FINEST 로그 메시지를 처리하기 때문에 syslogd는 140 %의 CPU를 사용하고 메모리를 중얼 거린다. 약 3 분 동안 우리의 응용 프로그램을 실행 한 후 syslogd는 2.5GB의 메모리를 사용하고 전체 시스템을 사용할 수 없게됩니다. kill syslogd/재부팅 만이 유일한 치료법입니다. 콘솔에서 앱을 시작하면 콘솔에 직접 로그가 기록되며 아무런 문제가 없습니다.OSX의 Eclipse RCP - syslog에 대한 로깅을 중지하는 방법?

어떻게 OSX에서 내 RCP 로깅을 처리 할 수 ​​있습니까?

답변

1

RCP 응용 프로그램의 RCP.App/Contents/Info.plist 파일을보십시오. RCP 제품 빌드에 의해 생성 된 기본 파일은 문자열 > -consoleLog < 문자열 >입니다.

이것은 모든 것이 syslogd에서 끝나는 이유 일 수 있습니다.

+0

네 - 고쳐 주셔서 고마워요! (나는 또한 여기에 의견을 추가하고 어제 답변을 수락했으나 둘 다 사라졌습니다 ...) – gromgull

0

Eclipse RCP에 익숙하지 않지만 syslog에 대한 경험이 있습니다. 시설로 local0 또는 local1을 사용하여 로깅 중일 수 있습니다. OSX는 local0.*/var/log/appfirewall.loglocal1에서 /var/log/ipfw.log으로 지정합니다. 두 시설 중 하나에 로깅하는 경우 로그에 기록 된 모든 내용이 디스크에 기록됩니다.

먼저 응용 프로그램이 로그인하는 syslog 기능을 구성 할 수있는 방법과 방법을 살펴 보겠습니다. 어떤 설비가 로깅 중인지 파악한 후에는 /etc/syslog.conf을 편집하고 syslog 데몬에 HUP 신호를 보내면 꺼야합니다. 자세한 설명은 syslogdsyslog.conf에 대한 설명서 항목을 읽으십시오.

syslog 대신 Java-esque 로깅 인터페이스를 사용하는 것이 좋습니다.

+0

우리는 이미 Java 로깅 프레임 워크를 사용하지만, 일부 Eclipse 기능은 stdout/err이 터미널에 연결되어 있지 않을 때이를 syslog로 재 지정합니다. syslog를 재구성하는 것은 옵션이지만 일반 사용자에게 앱을 배포 할 때 좋지 않습니다. – gromgull

0

나는 또한 이따금 씩 들었습니다. 내 생각 엔 이것입니다 :

Eclipse에서 Eclipse.app를 시작하면 콘솔 (stdout/stderr)이 syslog로 리디렉션되므로 Eclipse 자체 (또는 printf를 사용하는 플러그인)의 출력이 끝납니다 그곳에.

Terminal.app에 ./eclipse을 불러오고 대신 syslog가 아닌 터미널 창에 메시지가 표시되는지 확인하십시오.

그러나, 이것은 당신이 실제로 그 두 가지 모두를 원하지 않는다는 문제를 해결하지 않습니다 ... 누가 출력물을 만들어 내고 있는지를 알아 내고 대신에 그것을 ErrorLog에 넣으십시오.

불행히도, 나는 더 이상이 문제가 어디서 발생했는지 모르기 때문에 테스트 할 수 없습니다. 행운을 빕니다!

+0

Terminal.app에서 응용 프로그램을 시작하면 거기에 메시지가 표시되고 문제가 발생하지 않습니다. 이것은 현재 우리의 해결 방법이지만 덜 기술 지향적 인 사용자에게는 좋지 않습니다. ( 출력물은 예를 들어 apache에서 생산됩니다.httpclient 및 기타 제 3 자 라이브러리. – gromgull