【发布时间】:2018-07-18 11:58:56
【问题描述】:
我正在按照本手册在我的 java 应用程序中配置 log4j2- https://logging.apache.org/log4j/2.x/manual/configuration.html
但是我在提供文件路径时遇到了问题,因为我有两个 xml 文件-
SERVICE_NAME="mailServer"
SERVICE_HOME=${SERVICE_HOME:="/srv/osgi"}
SERVICE_CONF=${SERVICE_CONF:="${SERVICE_HOME}"}
SERVICE_LOG4J_FILE=${SERVICE_LOG4J_FILE:="${SERVICE_CONF}/${SERVICE_NAME}-log4j.xml"}
SERVICE_LOG4J_OPTS=${SERVICE_LOG4J_OPTS:="-Dlog4j.configurationFile=file:${SERVICE_LOG4J_FILE}"}
现在我也想给出 log4j2.xml 的位置。
那么如下给出逗号分隔的文件名是否正确-
SERVICE_LOG4J_FILE=${SERVICE_LOG4J_FILE:="${SERVICE_CONF}/${SERVICE_NAME}-log4j.xml", "${SERVICE_CONF}/log4j2.xml"}
【问题讨论】:
-
是的,在 Composite Configuration 部分中使用逗号分隔的路径是正确的。但是,我不太明白您在这里尝试做什么。如果要生成多个不同的文件,为什么不在 log4j2(xml、properties、yaml 等)文件中使用不同的 appender?
-
@JorgeCampos- 在生产环境中,文件
mailServer-log4j.xml已经存在,但文件log4j2.xml是最近添加的,我不想搞砸事情以防出错。跨度> -
如果您在项目中添加了 log4j2.xml 文件,您无需担心旧的“mailServer-log4j.xml”log4j 会忽略它。只需确保它具有正确的配置(从 1.x 迁移到 2.x),以便在部署新版本之前使用另一个环境(类似于生产)对其进行测试,确保它按预期工作然后部署
-
是的,我在不同的环境中做同样的事情。问题是我们通过提供此类命令行选项在 AWS 环境中使用
mailServer-log4j.xml文件,并且需要添加 log4j2.xml 以及一些守护程序服务日志处理。所以不确定它在 AWS 级别的表现如何。检查不同的环境是我的方式。 -
只要将 log4j2.xml 文件添加到项目的正确位置(在类路径中)就可以了。只需确保从配置中删除另一个,因为配置在 log4j 文件解析查找器中具有更高的优先级