查看 Upstart 作业的控制台输出,无需日志文件

查看 Upstart 作业的控制台输出,无需日志文件

我编写了一个自定义 Java 服务器。我/etc/init/myservice.config在启动时使用 Upstart() 运行它java -jar myservice.jar

java 进程用于System.out.println写入各种日志消息。

我希望能够从远程 ssh 会话连接到它并查看输出。

更新:我想做到这一点,而无需创建、轮换、管理日志文件的麻烦。

我看过很多帖子,包括: 如何在另一个 bash 会话中查看正在运行的进程的输出?

我已经尝试过了cattail -f /proc/<procid>/fd/0 /proc/<procid>/fd/1 /proc/<procid>/fd/2所有输出都是空白。

这一切都是作为root

我知道还有更多的事情可以尝试,但我很怀疑,因为 fd 是空白的(或者至少对我来说)。

我正在运行 Ubunutu Server 14.04 LTS,Oracle Java 8

更新:想要尝试屏幕,但我发现它并不完全适合这个...... 如何使用非特权用户的 upstart 作业启动屏幕会话?

答案1

我能想到的最简单的方法是将输出重定向到这样的文件:

java -jar myservice.jar >> /var/tmp/myservice

如果有大量输出,日志可能会变大,因此您可能需要cron每隔几个小时左右通过任务来修剪它,或者轮换日志。

确保它System.out.println打印输出,而不是System.err.println.如果是err,则需要重定向错误流。

java -jar myservice.jar 2>> /var/tmp/myservice

答案2

java -jar myservice.jar > mylogfile.txt 2>&1

2>&1意味着您还将程序中的错误记录到mylogfile.txt

相关内容