在将Jar文件作为服务运行时系统重新启动时,日志(Log4j)未显示

时间:2017-03-07 00:07:00

标签: java linux unix logging jar

我使用maven取消了SpringBoot应用程序,并在AWS Linux中部署了代码。我正在运行Jar文件(从mvn clean包创建)作为服务。但是,当系统重新启动时,日志不会生成。如果我只是终止ssh会话并打开新的SSH终端,我就能看到日志生成了。但是问题是在系统重新启动时,因为应用程序在后台运行但记录器不起作用。我编写了shell脚本,每次启动服务/或系统重启时都会设置环境变量。因此,每次我手动启动服务/系统重启环境变量都将被设置。当我手动运行服务(sudo服务myapp start)时,它工作,但系统重新启动时没有设置环境变量。

我的项目结构 我已将启动脚本和停止脚本放在我的脚本文件夹

start.sh:
    cd / home / ec2-user / webserver / osuserver
    sudo -E java -jar target / osu-soap-server-0.1.0.jar&

Stop.sh:
   sudo fuser 8090 / tcp -k ||真

我在/etc/init.d中创建了myapp

MyApp的:

source /home/ec2-user/webserver/osuserver/scripts/osuscript.sh
case $1 in
    start)
        /bin/bash /home/ec2-user/webserver/osuserver/scripts/start.sh
    ;;
    stop)
        /bin/bash /home/ec2-user/webserver/osuserver/scripts/stop.sh
    ;;
    restart)
         /bin/bash /home/ec2-user/webserver/osuserver/scripts/start.sh
        /bin/bash /home/ec2-user/webserver/osuserver/scripts/stop.sh
    ;;
esac
exit 0

每次系统重启时都要启动服务,我在/etc/rc.local中放置一个启动服务的命令

sudo service myapp start

因此,每当我重新启动系统时,我都可以看到应用程序在后台运行,因为大多数API都不依赖于环境变量。问题出在Logs和环境变量上。系统重新启动后,应用程序不会将任何日志写入文件,并且环境变量为空(可能是我的脚本文件,其中我设置的env变量未被执行)。但是应用程序在后台运行。

所以我想知道我是否需要改变运行jar文件作为服务的方式?或任何其他选择?

0 个答案:

没有答案