gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 05:40:55 25 4
gpt4 key购买 nike

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

play dist

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

问题是我的应用程序需要比开箱即用的通用日志/application.log 提供的更细粒度的日志记录。在我的开发箱上,我想出了如何创建和配置 conf/logger.xml 来为每个 Controller 类(实际上是任何类,但现在让我们坚持使用 Controller )执行老式主题日志记录。当我通过 Play 控制台运行时,这在我的开发箱上运行良好,但是当我通过“play dist”构建我的应用程序并仅使用启动 shell 脚本在应用程序服务器上启动它时,我永远不会得到这个记录器配置的日志文件生产。我也相信,但没有那些我不知道的日志, start 命令也无法找到我为我的项目配置的 Global 对象。

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

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

最佳答案

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

-Dconfig.resource=/conf/logger.xml

如果它在您的类路径中,它将找到记录器配置。 (我认为还有一个 -Dconfig.file 替代方案)。我还建议在您的类路径中添加一个配置目录,这样您的 Play 开始命令将类似于:
MYAPP_HOME=~/myapp
java -cp $MYAPP_HOME:$MYAPP_HOME/lib/* play.core.server.NettyServer $MYAPP_HOME

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

关于playframework - 从 "play dist"启动 shell 脚本无法在 JAR 文件中找到 logger.xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16906837/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com