2011-06-15 80 views
0

我創建了一個小程序,它在某些操作中將文本數據記錄到文件中。我正在訪問由Putty部署程序的遠程系統。我使用nohup運行程序,以便即使關閉我的外殼也能繼續運行。直到我登錄到shell時,它會繼續記錄數據。但是,一旦我退出我的shell,它將停止寫入日誌文件。我的程序仍然繼續運行,只是它不寫入日誌文件。 我正在使用Java 1.6 + slf4j + log4j進行日誌記錄。操作系統是Ubuntu。Java日誌記錄和Unix 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的java命令... myMainClass&'? (注意'&') – RonK 2011-06-15 04:32:05

+0

是的,我在後臺運行它 – Abhishek 2011-06-15 04:35:44

+0

您的log4j是否也配置了一個'console appender'?如果是的話 - 你是否試圖把它關掉,只是'文件appender'? – RonK 2011-06-15 04:42:55

回答

1

試着改變你的配置是:

log4j.rootLogger=DEBUG, AdminFileAppender 
... 
0

您如何運行該程序?運行程序之後,你是否在運行的進程列表中看到它正在執行ps -ef | grep <process-id>只是爲了確認,你的程序在任何時候都不會等待輸入?另外,請檢查您的流程的退出值。

+0

是的,我看到程序正在運行。它基本上是一個TCP服務器,它接受來自客戶端的請求並記錄客戶端發送給它的數據。所以即使關閉shell,我仍然能夠連接到TCP服務器併發送數據。 – Abhishek 2011-06-15 04:32:27