Log4j2 WebLookup 未得到解决

Teg*_*egi 5 lookup log4j2

我有以下 log4j2 配置

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="TRACE">
    <Appenders>
        <RollingRandomAccessFile name="SQLTiming" fileName="${web:rootDir}/log/SQLTiming.log"
            filePattern="${web:rootDir}/log/SQLTiming-%d{yyyy-MM-dd}.log">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %logger{2} - %msg%n" />
            <Policies>
                <TimeBasedTriggeringPolicy />
            </Policies>
        </RollingRandomAccessFile>
        <Console name="CONSOLE">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %logger{2} - %msg%n" />
        </Console>
    </Appenders>
    <Loggers>
        <Logger name="jdbc.sqltiming" level="info" additivity="false">
            <AppenderRef ref="SQLTiming" />
        </Logger>
        <Root level="error">
            <AppenderRef ref="CONSOLE" />
        </Root>
    </Loggers>
</Configuration>
Run Code Online (Sandbox Code Playgroud)

当我尝试通过 slf4j 获取记录器时

    protected static Logger logger = LoggerFactory.getLogger(DbConn.class);
Run Code Online (Sandbox Code Playgroud)

Log4j 创建附加程序失败。我查看了 log4j2 源代码,它尝试创建文件C:\Program Files\eclipse\${web:rootDir}\log\SQLTiming.log(它失败了),所以 log4j 似乎没有处理查找。

我在 Tomcat 7.0.4 中运行该应用程序,并使用http://logging.apache.org/log4j/2.x/manual/lookups.html建议的语法。我尝试使用 $${web:rootDir} (带有 2 个 $ 标记),这导致 $-s 之一被删除,但查找仍然没有成功。事实上,其他查找都没有成功(例如环境变量)。Log4j版本是2.0 beta9。

还有其他人见过类似的事情吗?我错过了什么吗?

Teg*_*egi 0

该解决方案实际上是按照以下描述的步骤进行的

http://logging.apache.org/log4j/2.x/manual/webapp.html

(我的应用程序在 servlet 2.5 容器中运行)

我只是不知何故错过了这篇文档(顺便说一下,它非常好)