我正在尝试使用log4j2
配置tomcat 7内部日志记录。我已按照Logging server classes in Tomcat 6 with log4j2提供的答案。
我正在使用tomcat 7.0.54和log4j-core-2.1.jar
,log4j-api-2.1.jar
。
我已经下载了额外的内容,并完成了以下所有步骤,但是当我启动tomcat时,我收到一个错误:
ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.
这些是我执行的步骤:
log4j2.xml
放入$CATALINA_BASE/lib
tomcat-juli.jar
和tomcat-juli-adapters.jar
log4j-api-2.1.jar
,log4j-core-2.1.jar
,log4j-jul-2.1.jar
和tomcat-juli-adapters.jar
进入$CATALINA_HOME/lib
。$CATALINA_HOME/bin/tomcat-juli.jar
替换为来自"额外内容" {/ 1}的tomcat-juli.jar
。$CATALINA_BASE/conf/logging.properties
log4j2-jul
网桥(log4j-jul-2.1.jar
)中的管理器。更改catalina.sh
以确保类路径包含bin/tomcat-juli.jar
,lib/log4j-jul-2.1.jar
,lib/log4j-api-2.1.jar
和lib/log4j-core-2.1.jar
,并且用于启动tomcat的命令包括
-Djava.util.logging.manager = org.apache.logging.log4j.jul.LogManager` 我甚至尝试在LOGGING_CONFIG="-Djava.util.logging.config.file=$CATALINA_HOME/lib/log4j2.xml"
中添加此内容(catalina.sh
),但无效。
如果有人能成功配置,请告诉我。
答案 0 :(得分:8)
我采取了以下步骤,它对我有用。
诀窍是跟随官方tomcat 7 documentation设置log4J 1.X,而是改为使用log4j2工件。此解决方案也不需要对$ CATALINA_HOME / bin / catalina.sh或任何其他文件进行任何更改$ CATALINA_HOME / bin
答案 1 :(得分:5)
我的错误,我需要在$CATALINA_BASE/lib
的类路径中包含log4j2.xml
才能被选中。
答案 2 :(得分:3)
根据您的安装调整以下内容:
我的Tomcat 8.5.x位于/ opt / tomcat /
<强> 1。将log4j2 jar文件复制到/ opt / tomcat / lib /
(对于Windows使用副本)
<强> 2。创建/opt/tomcat/conf/log4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="OFF">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="LOGJ2 %d [%-6p] %c{1} – %m%n"/>
</Console>
</Appenders>
<Loggers>
<Logger name="*" level="trace">
<AppenderRef ref="Console"/>
</Logger>
<Root level="info">
<appenderRef ref="Console" level="info"/>
</Root>
</Loggers>
</Configuration>
第3。创建或编辑/opt/tomcat/bin/setenv.sh或/opt/tomcat/bin/setenv.bat
如果没有在setenv.sh/bat中设置CLASSPATH,则初始Tomcat引导加载程序将无法访问类org.apache.logging.log4j.jul.LogManager和log4j2类。在启动Tomcat之前设置CLASSPATH不会影响初始Tomcat引导加载程序,因为在运行setenv.sh/bat之前catalina.sh/bat unsets CLASSPATH
#The environment variable CLASSPATH is unset in catalina.sh/catalina.bat
CLASSPATH=/opt/tomcat/lib/log4j-api-2.9.1.jar:/opt/tomcat/lib/log4j-core-2.9.1.jar:/opt/tomcat/lib/log4j-jul-2.9.1.jar
JAVA_OPTS=-Dlog4j.configurationFile=/opt/tomcat/conf/log4j2.xml
LOGGING_MANAGER=-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager
<强> 4。查看/opt/tomcat/log/catalina.out中的日志并注意log42.xml中的LOGJ2前缀
LOGJ2 2017-10-12 08:47:37,797 [INFO ] VersionLoggerListener – Server built: Sep 28 2017 10:30:11 UTC
LOGJ2 2017-10-12 08:47:37,797 [INFO ] VersionLoggerListener – Server number: 8.5.23.0
LOGJ2 2017-10-12 08:47:37,797 [INFO ] VersionLoggerListener – OS Name: Linux
LOGJ2 2017-10-12 08:47:37,797 [INFO ] VersionLoggerListener – OS Version: 4.4.0-93-generic
LOGJ2 2017-10-12 08:47:37,797 [INFO ] VersionLoggerListener – Architecture: amd64
答案 3 :(得分:0)
添加上述提到的Jars对我有用
Apache Tomcat / 7.0.70
:
/tomcat/bin/setenv.sh
LOG_PARAMS="-Dlog4j.configurationFile=file:///tomcat/conf/log4j2.xml"
/tomcat/conf/log4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<!-- ================================= -->
<!-- Preserve messages in a local file -->
<!-- ================================= -->
<Appenders>
<!-- A time/date based rolling appender -->
<RollingFile name="FILE" fileName="../logs/server.log"
filePattern="../logs/server.log.%d{yyyy-MM-dd}" append="true">
<PatternLayout>
<pattern>%d %-5p [%c] [%t] [%x] %m%n</pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
</Policies>
</RollingFile>
</Appenders>
<Loggers>
<!-- ======================= -->
<!-- Setup the Root category -->
<!-- ======================= -->
<Root>
<AppenderRef ref="FILE" level="debug"/>
</Root>
</Loggers>
</Configuration>