我有以下 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>
当我尝试通过 slf4j 获取记录器时
protected static Logger logger = LoggerFactory.getLogger(DbConn.class);
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。
有没有其他人见过类似的东西?我错过了什么吗?