首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring : app.jar旁边的log4j2.xml在生产环境中没有读取

Spring : app.jar旁边的log4j2.xml在生产环境中没有读取
EN

Stack Overflow用户
提问于 2018-07-24 11:50:41
回答 2查看 246关注 0票数 0

我刚开始玩春靴。

在“资源”下有两个文件:

代码语言:javascript
复制
-- resources
    -- application.properties
    -- log4j2.xml

在开发环境中,一切都很好。

在生产环境中,我复制两个文件并将它们放在app.jar旁边:

代码语言:javascript
复制
  -- app_folder
        -- my-app.jar
        -- application.properties
        -- log4j2.xml

当我启动my-app.jar时:

  • application.properties按预期从app_folder读取
  • 从“资源”读取log4j2.xml,忽略app_folder下的

它不是应该从盒子里往这边走吗?我做错什么了?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-24 16:10:05

我所要做的就是把一个名为

代码语言:javascript
复制
name-of-my-spring-boot-jar-file.conf

在与jar文件本身相同的目录中。conf文件的内容:

代码语言:javascript
复制
JAVA_OPTS="-Dlog4j.configurationFile=/home/<user>/log4j2.xml"
票数 0
EN

Stack Overflow用户

发布于 2018-07-24 12:00:54

你为什么认为它是那样工作的?

的确,根据其文档,如果application.properties与jar文件放在同一个目录中,那么Spring将正确地检测它。

尽管如此,log4j2.xml不是由Spring读取的,而是由Log4J2框架读取的,根据其文档,框架oly在类路径上查找文件。

如果文件位于其他地方,则需要指定如下路径:

代码语言:javascript
复制
java -Dlog4j.configurationFile=path/to/log4j2.xml -jar my-app.jar

编辑:

java是一个可执行文件,所以在启动我的-app时不调用'java‘命令。

是的你知道。即使您是从GUI调用它(例如。(在Windows中双击资源管理器)它仍然在引擎盖下运行java -jar my-app.jar

app.jar不是驻留在被认为是类路径的同一个文件夹中吗?

再说一次,你为什么要假设它是?

在Java文档(这里 for Folders and Archive Files 8)一节中,它清楚地指出,如果类存储在jar中,那么类路径只包含来自jar的内容(尽管在Spring中,由于定制的类加载器,它还包括嵌入在jar中的jar,但是通常情况下不包括jar-参见可执行Jar格式)。

在尝试使用以前没有使用过的任何框架/库/编程语言之前,您确实应该阅读文档(至少是其中的相关部分)--从长远来看,它将节省大量时间。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51497851

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档