【问题标题】:Java Logging & Unix Nohup problemJava 日志记录和 Unix Nohup 问题
【发布时间】:2011-06-15 04:24:41
【问题描述】:

我创建了一个小程序,它在某些操作上将文本数据记录到文件中。我正在访问由 Putty 部署程序的远程系统。我已经使用 nohup 运行了程序,这样即使我关闭了我的 shell,它也能继续运行。直到我登录到 shell 时,它才会继续记录数据。但是,一旦我退出我的 shell,它就会停止写入日志文件。我的程序仍然继续运行,只是它没有写入日志文件。 我正在使用 Java 1.6 + slf4j+log4j 进行日志记录。操作系统是 Ubuntu。

不胜感激。

编辑: 我的 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 &

【问题讨论】:

  • 您是否以nohup java -cp ... myMainClass & 运行它? (注意&
  • 是的,我在后台运行它
  • 您的 log4j 是否也配置了 console appender?如果是的话 - 你有没有试过把它关掉,只留下file appender
  • 是的,有一个控制台 Appender。我把它关掉看看
  • 发布您的log4j.xml/log4j.properties - 它可能会有所帮助。以及您正在运行的确切命令

标签: java unix logging log4j nohup


【解决方案1】:

尝试将您的配置更改为:

log4j.rootLogger=DEBUG, AdminFileAppender
...

【讨论】:

    【解决方案2】:

    你如何运行程序?运行程序后,您是否通过执行ps -ef | grep <process-id> 在正在运行的进程列表中看到它只是为了确保您的程序在任何时候都不会阻塞等待输入?另外,检查进程的退出值。

    【讨论】:

    • 是的,我看到程序正在运行。它基本上是一个 TCP 服务器,它接受来自客户端的请求并记录客户端发送给它的数据。因此,即使关闭 shell,我仍然能够连接到 TCP 服务器并发送数据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-11
    • 1970-01-01
    • 2010-11-15
    • 1970-01-01
    • 2011-06-17
    • 2013-07-05
    • 1970-01-01
    相关资源
    最近更新 更多