2013-06-03 13 views
4

我是Play 2.1的新手,正试图找出将Play部署到我们的操作环境的最简单方法。该出的现成播放2.1功能,拥有最有希望是从“play dist”启动shell脚本无法在JAR文件中找到logger.xml

play dist 

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

问题是我的应用程序需要更多的细粒度日志记录,而不是现成的单一大小日志/ application.log所提供的日志。在我的开发箱中,我想出了如何创建和配置conf/logger.xml来为每个控制器类执行老派主题日志记录(实际上任何类,但现在让我们继续使用控制器)。当我运行游戏控制台时,这在我的开发框中工作正常,但是当通过“play dist”构建我的应用程序并使用启动shell脚本在应用程序服务器上启动它时,我从来没有获得配置此记录器的日志文件生产。我也相信,但没有这些日志我不知道,启动命令也无法找到我为我的项目配置的全局对象。

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

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

回答

2

我建议编辑制作启动脚本以下添加到您的java命令行:

-Dconfig.resource=/conf/logger.xml 

这将找到记录仪的配置,如果它在你的classpath。 (我认为还有一个-Dconfig.file替代方案)。我还建议增加一个配置目录到类路径,所以你的游戏开始命令是这样的:

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

通过在classpath中,而不是从一个jar文件的目录让你的配置,你获得的能力编辑它,或者指定不同的版本。

+0

我得出了类似的结论。 ZIP文件+由“play dist”生成的启动脚本务必在生产机器上用-D进行修改,以使其正常工作。这感觉就像是对我来说“玩游戏”的错误,但它可以解决。 –

+0

Play 2.1.1中没有办法让它进入类路径从应用程序的JAR中加载logger.xml。 -Dlogger.resource = logger.xml无法找到该文件。我只通过将logger.xml复制到分发目录和-Dlogger.file = conf/logger.xml来获得成功。叹。 –

+0

有趣!我仍然在Play 2.0.4上。您可以通过尝试'.getClass()。getResource(“/ conf/logger.xml”')来调查logger.xml是否在您的类路径中。无论如何,我发现我需要编写自己的启动脚本,其他原因。 –