繁体   English   中英

如何在play框架dist中正确配置调试级别和ehcache?

[英]How do i properly configure debug level and ehcache in a play framework dist?

我在运行通过调用dist任务创建的通用分发的linux机器上使用Play Framework 2.2.1。

我对在生产中配置应用程序的不同方面的位置和方式感到有些困惑。

我有这些文件用于配置:

application.conf
application-logger.xml
ehcache.xml

在play framework dist任务创建的zip文件中,这些文件存在两次。

location 1:
conf/application.conf
conf/application-logger.xml
conf/ehcache.xml

location 2: 
lib/myApp.myApp-1.0-SNAPSHOT.jar/application.conf
lib/myApp.myApp-1.0-SNAPSHOT.jar/application-logger.xml
lib/myApp.myApp-1.0-SNAPSHOT.jar/ehcache.xml

事实证明,application.conf是从位置1读取的,但是application-logger.xml和ehcache.xml是从位置2读取的!

那么,为了更改调试级别,我必须更改我的分发zip的lib文件夹中的zip文件内的内容?

我做错了什么或者这个预期的设计?

谢谢!

我不认为你做错了什么。 过去我也一直对Play如何在生产模式下管理配置感到困惑。 我相信这是他们的方法:

  • 您包含在项目的conf目录中的文件将进入应用程序JAR的根目录。 这个JAR是你的类路径上的第一个JAR。

  • 这些文件也将进入ZIP文件的conf目录。 但是,此conf目录添加到类路径中,因此在应用程序启动时不会加载这些文件中的配置。

  • 稍微的例外是application.conf - 在从类路径加载它之前,Play将在conf目录下的文件系统上查找它。 如果找到它,它会更喜欢文件系统上的这个版本到类路径上的版本。

这种解释与您所看到的行为一致。 现在回到手头的任务,您希望能够通过更改文件系统上的文件而不是黑客攻击JAR来重新配置应用程序。 虽然Play的默认行为似乎是在JAR中保存配置文件,但是他们的生产配置文档提供了不同的方式来公开配置文件以便于访问:

公开您的应用程序配置文件

您发现文件系统上的application.conf文件的更改被Play选中,因此您不需要做任何不同的操作。 您可能会对各种config.resourceconfig.fileconfig.url参数感兴趣,您可以使用它们启动应用程序。

公开您的logback配置文件

我通常使用文档中提到的logger.file参数启动我的Play应用程序。 使用此参数并指向文件系统上的application-logger.xml版本可以更轻松地打开调试级别的日志记录。

公开您的ehcache配置文件

公开ehcache.xml有点棘手,因为Play目前没有提供从非类路径位置加载Ehcache配置的方法。 你可以做的是在你的项目中移动你的ehcache.xml文件:

dist/ehcache/ehcache.xml

然后,您的ZIP文件将包含在以下位置:

ehcache/ehcache.xml

然后,您可以编辑启动脚本并将此ehcache目录添加到类路径中。 这应该工作,但有点手动和丑陋的方法。 使用SBT可能有更好的方法将目录放到类路径中。

更新了Play 2.3.8的答案

当前启动应用程序时,您可以使用ehcache.configResource参数配置ehcache的位置。

默认情况下,它会查找ehcache.xml,如果该文件不存在,则加载框架ehcache-default.xml提供的默认配置

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM