Log4j2 WebLookup未得到解决
我有以下log4j2配置Log4j2 WebLookup未得到解决,lookup,log4j2,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:rootD
<?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>
Log4j无法创建追加器。我查看了log4j2源代码,它试图创建文件C:\Program Files\eclipse\${web:rootDir}\log\SQLTiming.log
(它没有这样做),因此似乎log4j没有处理查找
我正在Tomcat7.0.4中运行该应用程序,并使用所建议的语法。
我尝试使用$${web:rootDir}(带有2个$marks),结果删除了其中一个$-s,但查找仍然没有成功。事实上,其他查找都没有成功(例如环境变量)。Log4j版本是2.0 beta9
还有人见过类似的吗?我遗漏了什么吗?您是在Tomcat standalone中运行,还是在Eclipse插件中运行?如果Log4J找不到用于查找的值,它将创建一个名称中包含该模式的文件(这就是您看到的)。所以查找失败了。它试图创建的文件位于Eclipse安装目录下,这一事实告诉我,您正在运行的进程是Eclipse,而不是Tomcat。你在使用哪个插件 可能是在将Tomcat作为Eclipse插件运行时,没有正确设置所有${web:…}环境变量。当您在Tomcat standalone中使用上述设置运行时,我希望一切正常,您能验证这一点吗
我不确定Log4J团队对此能做些什么,但是你可以试着提出这个问题。您还可以尝试联系EclipseTomcat插件的作者。解决方案实际上遵循了中描述的步骤 (我的应用程序在servlet 2.5容器中运行)
不知何故,我错过了这篇文档(顺便说一句,这篇文档非常棒)对于
servlet 3.0
容器,您必须在web.xml
中配置log4jContextName
,如下所示:
<context-param>
<param-name>log4jContextName</param-name>
<param-value>log4jContext</param-value>
</context-param>
log4jContextName
log4jContext
servlet 2.5环境是否需要它?weblogic 12c上也出现类似问题。在部署期间,weblogic尝试使用${web..}创建一个文件,但由于log4j2 web查找未初始化,它会抛出错误,即无法创建具有给定名称的文件…用于引用-1的链接。2.
<context-param>
<param-name>log4jContextName</param-name>
<param-value>log4jContext</param-value>
</context-param>