从“play dist”启动shell脚本无法在JAR文件中找到logger.xml

时间:2013-06-03 22:25:18

标签: playframework playframework-2.0 playframework-2.1

我是Play 2.1的新手,我正在尝试找出将Play部署到我们的操作环境中的最简单方法。具有最大承诺的开箱即用的Play 2.1功能是

play dist

构建一个ZIP文件,其中包含运行我的应用程序的所有支持JAR以及启动整个事情的一些启动shell脚本。像冠军一样工作。

问题是我的应用程序需要比开箱即用的one-size-all-all logs / application.log提供的更细粒度的日志记录。在我的dev的盒子,我想出了如何创建和配置的conf / logger.xml执行每个控制器类老派的话题日志(任何类,其实,还是让我们用控制器坚持现在)。当我通过播放控制台运行时,这在我的开发盒上运行正常,但是当我通过“播放dist”构建我的应用程序并使用启动shell脚本在应用服务器上启动它时,我从未获得此logger配置的日志文件生产。我也相信,但如果没有那些我不知道的日志,start命令也无法找到我为项目配置的Global对象。

查看作为我的应用程序的JAR文件,我可以看到conf / application.conf和conf / logger.xml文件位于JAR中,它们只是在应用程序启动时才被加载。

如何执行启动脚本以从JAR文件加载logger.xml?我是否真的必须在命令行上使用-D指定它,还是应该直接从应用程序的JAR加载?

1 个答案:

答案 0 :(得分:2)

我建议您编辑生产启动脚本,将以下内容添加到java命令行:

-Dconfig.resource=/conf/logger.xml

如果它在你的类路径中,它将找到记录器配置。 (我认为还有一个-Dconfig.file替代方案)。我还建议在您的类路径中添加一个配置目录,因此您的播放启动命令将类似于:

MYAPP_HOME=~/myapp
java -cp $MYAPP_HOME:$MYAPP_HOME/lib/* play.core.server.NettyServer $MYAPP_HOME

通过从类路径中的目录而不是从jar文件中获取配置,您可以编辑它,或指定不同的版本。