jetty - 在 Windows 中使用 logback 在 ${jetty.home} 之外启动码头
问题描述
我的目标是将码头设置为作为服务运行,并认为我应该首先在命令行中运行它。我目前的目标是能够从根路径运行码头。完成后,我可以将相同的命令设置为通过https://nssm.cc/作为服务运行。
问题
我在这个 Jetty 实例中部署的 webapp 使用 logback 来管理它的日志记录<file>logs/app.log</file>
这按预期工作。
C:\jetty>java -jar start.jar
这不C:\>java -jar C:\jetty\start.jar
。(注意不同的 cmd 路径)。Jetty 无法找出日志文件的正确路径。经过一些测试,我能够纠正路径问题,但码头仍然抱怨无法找到日志文件,即使我看到它存在。那么,权限问题可能吗?我继续为每个人提供对整个文件夹的完全读写权限。没有骰子,仍然是同样的错误。
我现在运行的命令
C:\>java -Djetty.base=C:\jetty -Duser.dir=C:\jetty -jar C:\jetty\start.jar
但错误仍然存在。
....
12:11:51,095 |-INFO in ch.qos.logback.core.FileAppender[FILE] - File property is set to [logs/app.log]
12:11:51,111 |-ERROR in ch.qos.logback.core.FileAppender[FILE] - Failed to create parent directories for [C:\jetty\logs\app.log]
12:11:51,111 |-ERROR in ch.qos.logback.core.FileAppender[FILE] - openFile(logs/app.log,true) call failed. java.io.FileNotFoundException: logs\app.log (The system cannot find the path specified)
at java.io.FileNotFoundException: logs\app.log (The system cannot find the path specified)
....
码头版本是 9.4.9.v20180320
解决方案
${jetty.base}
在目录之外创建一个适当的${jetty.home}
目录。
接下来,为自己获取一份新的副本jetty-home
(或者jetty-distribution
实际上只是将文档、演示和示例库添加到jetty-home
)。
http://search.maven.org/#search|gav|1|g:"org.eclipse.jetty" AND a:"jetty-home"
jetty-home
将该工件 解压缩到一个新目录中。
重要的:
- 请勿触摸任何内容
jetty-home
- 不要编辑任何内容
jetty-home
- 不要删除任何东西
jetty-home
- 不要添加任何东西
jetty-home
- 别
jetty-home
管 - 视为
jetty-home
只读目录
即使使用上述所有项目符号也适用
jetty-distribution
最后,根据Jetty Documentation中的建议启动 jetty 。
> cd \path\to\myjettybase
> java -jar \path\to\jetty-home\start.jar
注意 和 缺少声明的系统属性
-Djetty.home
,-Djetty.base
这很重要!
这将设置以下重要的目录属性。
jetty.base
将是您的 CWD,或\path\to\myjettybase
jetty.home
将是你start.jar
被发现的地方,又名\path\to\jetty-home\
user.dir
将是您的 CWD 并指向\path\to\myjettybase
对于像您这样的日志记录配置,重要的是user.dir
系统属性。(又名当前工作目录)
您在不关注工作目录的情况下使用的技术只是尝试使用系统属性将值强制输入 JVM,这仅在最简单的项目和用例中可行。(您的要求已经超出了这种设置)
推荐阅读
- python - 传递的python递归列表未更新
- vercel - 如何从同一个 monorepo 在 Vercel 上部署前端和后端?
- python - Pandas:使用布尔掩码和索引分配值
- python - 蟒蛇 | 熊猫 | 读取不同格式的 Excel 表格
- amazon-web-services - 错误 | 注册会员管理员 | fabric-ca-client 注册 | 亚马逊托管区块链
- scala - 使用参数创建动态对象
- javascript - 如何在反应中使用useeffect钩子?
- css - width:auto 和 max-width:fit-content 有什么区别?
- c# - .NET Core MVC 中 URL 内的双斜杠
- android - 无法在 Android 11 上访问 obb 目录