2011-06-15 3 views
0

나는 어떤 행동으로 텍스트 데이터를 파일에 기록하는 작은 프로그램을 만들었다. Putty가 프로그램을 배포 한 원격 시스템에 액세스하고 있습니다. 나는 nohup을 사용하여 프로그램을 실행 했으므로 쉘을 종료해도 계속 실행됩니다. 셸에 로그인 할 때까지 데이터를 계속 기록합니다. 그러나, 내가 쉘을 종료하자마자 로그 파일에 쓰는 것을 멈 춥니 다. 내 프로그램은 여전히 ​​로그 파일에 쓰지 않는 것을 계속해서 실행합니다. 로깅을 위해 Java 1.6 + slf4j + log4j를 사용하고 있습니다. OS는 우분투입니다.자바 로깅 및 유닉스 Nohup 문제

도움을 주셔서 감사합니다.

편집 : 내 log4j.properties

log4j.rootLogger=DEBUG 

log4j.appender.AdminFileAppender=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.AdminFileAppender.File=pdmLogs.log 
log4j.appender.AdminFileAppender.layout=org.apache.log4j.PatternLayout 
log4j.appender.AdminFileAppender.layout.ConversionPattern=%d{dd MMM yyyy HH:mm:ss,SSS} -- %p %t %c - %m%n 

log4j.appender.ReportFileAppender=org.apache.log4j.ConsoleAppender 
log4j.appender.ReportFileAppender.layout=org.apache.log4j.PatternLayout 
log4j.appender.ReportFileAppender.layout.ConversionPattern=%d{dd MMM yyyy HH:mm:ss,SSS} -- %p %t %c - %m%n 

log4j.logger.com.xxx.xxx.yyy=ReportFileAppender,AdminFileAppender 
log4j.logger.com.xxx.xxx.zzz=ReportFileAppender,AdminFileAppender 

명령 내가 실행하고 있습니다 :

nohup java -cp jarfile.jar com.xxx.xxx.yyy.Main & 
+0

당신이'nohup을 자바 -cp ... myMainClass &'로 실행 했 : – RonK

+0

예 백그라운드에서 실행했습니다. – Abhishek

+0

log4j도'console appender '로 구성되어 있습니까? 만약 그렇다면 - 그냥 꺼내려고했는데'파일 첨부 '만 남겨 두었습니까? – RonK

답변

1

은 당신의 구성을 변경하려고? (참고로`&`)
0

어떻게 프로그램을 실행합니까? 프로그램을 실행 한 후 실행중인 프로세스 목록 중에서 실행하십시오. ps -ef | grep <process-id> 입력을 기다리는 동안 프로그램이 차단되지 않도록하십시오. 또한 프로세스의 종료 값을 확인하십시오.

log4j.rootLogger=DEBUG, AdminFileAppender 
... 
+0

예 프로그램이 실행 중입니다. 기본적으로 클라이언트로부터 요청을 받아들이고 클라이언트가 보낸 데이터를 기록하는 TCP 서버입니다. 따라서 쉘을 종료 할 때조차도 TCP 서버에 연결하여 데이터를 보낼 수 있습니다. – Abhishek