从tomcat server.xml获取主机上下文参数到log4j2

问题描述 投票:0回答:2
tomcat log4j2
2个回答
0
投票

<Parameter>
元素没有定义JNDI环境,而是一个servlet上下文参数(参见
ServletContext#getInitParameter
)。

要检索那些您需要使用log4j-web

(或
log4j-jakarta-web
)工件中可用的
Web Lookup

${web:initParam.applicationName}

如果您不想手动定义应用程序名称,您可以:

  • 使用
    ${web:contextPathName}
    将为根上下文提供“”,为
    /foo
    处的应用程序提供“foo”,为
    /bar/baz
    处的应用程序提供“bar”,
  • 使用我写的小型 Tomcat 特定查找(参见 Github):
    <dependency>
        <groupId>eu.copernik</groupId>
        <artifactId>log4j-tomcat</artifactId>
        <version>2.18.0</version>
    </dependency>
    
    并使用:
    ${tomcat:classloader.webappName}
    
    这为您提供了根据 Tomcat 规则 编码的上下文路径:“ROOT”表示根上下文,“foo”表示
    /foo
    ,“bar#baz”表示
    /bar/baz
    。它还适用于应用程序版本控制。

备注: 配置文件中定义的属性是缺少查找值的默认值,因此如果您定义:

<Property name="foobar" value="${baz:foobar}"/>

如果 bar 查找没有“foobar”值,您将得到一个

recursive
定义。


-1
投票

这与您的方法不同,但我相信这会给您带来洞察力。

另一个问题:log4j-for-each-context

© www.soinside.com 2019 - 2024. All rights reserved.