[英]Tomcat9 Log4j2 - Logging is Different Between Two Servers
I am running two different Tomcat9 servers (DEV, PROD), each at separate CentOS 7 service providers, and the app logs generated, using the same log4j2.xml, are different. 我正在运行两个不同的Tomcat9服务器(DEV,PROD),每个都在单独的CentOS 7服务提供商处,并且使用相同的log4j2.xml生成的应用程序日志是不同的。 In the DEV version I get a full log of com.example, but in the PROD version I only get org.hibernate logging. 在DEV版本中,我获得了com.example的完整日志,但是在PROD版本中,我仅获得了org.hibernate日志。
Both servers are configured similarly (shown further down). 两台服务器的配置类似(进一步显示)。 Both use same log4j2.xml, MyWebApp.war deployed on each Tomcat is identical. 两者都使用相同的log4j2.xml,部署在每个Tomcat上的MyWebApp.war是相同的。
Both Tomcats are standard installs - meaning, I have not added any log4j jars or properties to either one. 两个Tomcat都是标准安装-意思是,我没有向其中任何一个添加任何log4j jar或属性。
I hope someone has some things to consider. 我希望有人要考虑一些事情。
Thanks, 谢谢,
Bob 鲍勃
DEV Config: DEV配置:
Provider: VPS
rpm -q centos-release
centos-release-7-6.1810.2.el7.centos.x86_64
java -cp /opt/tomcat/apache-tomcat-9.0.20/lib/catalina.jar org.apache.catalina.util.ServerInfo
Server version: Apache Tomcat/9.0.20
Server built: May 3 2019 22:26:00 UTC
Server number: 9.0.20.0
OS Name: Linux
OS Version: 2.6.32-042stab127.2
Architecture: amd64
JVM Version: 1.8.0_212-b04
JVM Vendor: Oracle Corporation
PROD Config: PROD配置:
Provider: Jelastic
rpm -q centos-release
centos-release-7-6.1810.2.el7.centos.x86_64
java -cp /opt/tomcat/lib/catalina.jar org.apache.catalina.util.ServerInfo
Server version: Apache Tomcat/9.0.19
Server built: Apr 12 2019 14:22:48 UTC
Server number: 9.0.19.0
OS Name: Linux
OS Version: 3.10.0
Architecture: amd64
JVM Version: 1.8.0_202-b08
JVM Vendor: Oracle Corporation
log4j2.xml: log4j2.xml:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Properties>
<Property name="logPath">/home/example/logs</Property>
</Properties>
<Appenders>
<Console name="console" target="SYSTEM_OUT">
<PatternLayout
pattern="%d [%t] %-5p [%C.%M()] %m%n" />
</Console>
<RollingFile name="rollingFile" fileName="${logPath}/MyWebApp.log"
filePattern="${logPath}/cucumber-log_%d{yyyy-MM-dd}.log">
<PatternLayout
pattern="%d [%t] %-5p [%C.%M()] %m%n" />
<Policies>
<OnStartupTriggeringPolicy />
<TimeBasedTriggeringPolicy interval="1"
modulate="true" />
</Policies>
</RollingFile>
</Appenders>
<Loggers>
<Logger name="org.springframework" level="warn" additivity="false">
<AppenderRef ref="console" level="warn"/>
<AppenderRef ref="rollingFile" level="warn"/>
</Logger>
<Logger name="org.hibernate" level="debug" additivity="false">
<AppenderRef ref="console" level="debug"/>
<AppenderRef ref="rollingFile" level="debug"/>
</Logger>
<Logger name="com.example" level="trace" additivity="false">
<AppenderRef ref="console" level="trace"/>
<AppenderRef ref="rollingFile" level="trace"/>
</Logger>
<Root level="TRACE" additivity="false">
<AppenderRef ref="console" />
<AppenderRef ref="RollingFile" />
</Root>
</Loggers>
</Configuration>
mywebapp.war: mywebapp.war:
DEV MyWebApp.log (end of hibernate AND beginning of mywebapp logging): DEV MyWebApp.log (休眠结束和mywebapp日志记录开始):
2019-06-13 05:18:36,998 [main] DEBUG [org.hibernate.engine.transaction.jta.platform.internal.JtaPlatformInitiator.initiateService()] No JtaPlatform was specified, checking resolver
2019-06-13 05:18:36,998 [main] TRACE [org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService()] Initializing service [role=org.hibernate.engine.transaction.jta.platform.spi.JtaPlatformResolver]
2019-06-13 05:18:37,002 [main] DEBUG [org.hibernate.engine.transaction.jta.platform.internal.JtaPlatformResolverInitiator.initiateService()] No JtaPlatformResolver was specified, using default [org.hibernate.engine.transaction.jta.platform.internal.StandardJtaPlatformResolver]
2019-06-13 05:18:37,027 [main] DEBUG [org.hibernate.engine.transaction.jta.platform.internal.StandardJtaPlatformResolver.resolveJtaPlatform()] Could not resolve JtaPlatform, using default [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
2019-06-13 05:18:37,028 [main] INFO [org.hibernate.engine.transaction.jta.platform.internal.JtaPlatformInitiator.initiateService()] HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
2019-06-13 05:18:37,031 [main] DEBUG [org.hibernate.query.spi.NamedQueryRepository.checkNamedQueries()] Checking 0 named HQL queries
2019-06-13 05:18:37,031 [main] DEBUG [org.hibernate.query.spi.NamedQueryRepository.checkNamedQueries()] Checking 0 named SQL queries
2019-06-13 05:18:37,032 [main] TRACE [org.hibernate.type.spi.TypeConfiguration.sessionFactoryCreated()] Handling #sessionFactoryCreated from [org.hibernate.internal.SessionFactoryImpl@35c7c5e] for TypeConfiguration
2019-06-13 05:18:37,036 [main] DEBUG [org.hibernate.internal.SessionFactoryRegistry.<init>()] Initializing SessionFactoryRegistry : org.hibernate.internal.SessionFactoryRegistry@2ebf0e46
2019-06-13 05:18:37,037 [main] DEBUG [org.hibernate.internal.SessionFactoryRegistry.addSessionFactory()] Registering SessionFactory: 7ffcae61-38d8-4cc8-9cc2-4889b35589f0 (<unnamed>)
2019-06-13 05:18:37,038 [main] DEBUG [org.hibernate.internal.SessionFactoryRegistry.addSessionFactory()] Not binding SessionFactory to JNDI, no JNDI name configured
2019-06-13 05:20:23,717 [ajp-nio-8009-exec-1] WARN [com.example.tanglemydata.controller.AccountController.getAllAdData()] ENTRY
2019-06-13 05:20:23,719 [ajp-nio-8009-exec-1] DEBUG [com.example.tanglemydata.service.AccountService.getAllAdData()] ENTRY
2019-06-13 05:20:23,794 [ajp-nio-8009-exec-1] TRACE [org.hibernate.internal.SessionFactoryImpl$SessionBuilderImpl.openSession()] Opening Hibernate Session. tenant=null, owner=null
2019-06-13 05:20:24,088 [ajp-nio-8009-exec-1] TRACE [org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService()] Initializing service [role=org.hibernate.resource.transaction.spi.TransactionCoordinatorBuilder]
2019-06-13 05:20:24,254 [ajp-nio-8009-exec-1] TRACE [org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService()] Initializing service [role=org.hibernate.stat.spi.StatisticsImplementor]
2019-06-13 05:20:24,295 [ajp-nio-8009-exec-1] DEBUG [org.hibernate.stat.internal.StatisticsInitiator.initiateServiceInternal()] Statistics initialized [enabled=false]
2019-06-13 05:20:24,303 [ajp-nio-8009-exec-1] TRACE [org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService()] Initializing service [role=org.hibernate.jmx.spi.JmxService]
2019-06-13 05:20:24,319 [ajp-nio-8009-exec-1] TRACE [org.hibernate.internal.SessionImpl.<init>()] Opened Session [3eb81c15-c50c-44a5-9825-5e31d3cb2172] at timestamp: 1560403224040
PROD MyWebApp.log (last 9 entries): PROD MyWebApp.log (最后9个条目):
2019-06-13 04:39:40,435 [main] DEBUG [org.hibernate.engine.transaction.jta.platform.internal.JtaPlatformInitiator.initiateService()] No JtaPlatform was specified, checking resolver
2019-06-13 04:39:40,437 [main] DEBUG [org.hibernate.engine.transaction.jta.platform.internal.JtaPlatformResolverInitiator.initiateService()] No JtaPlatformResolver was specified, using default [org.hibernate.engine.transaction.jta.platform.internal.StandardJtaPlatformResolver]
2019-06-13 04:39:40,505 [main] DEBUG [org.hibernate.engine.transaction.jta.platform.internal.StandardJtaPlatformResolver.resolveJtaPlatform()] Could not resolve JtaPlatform, using default [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
2019-06-13 04:39:40,506 [main] INFO [org.hibernate.engine.transaction.jta.platform.internal.JtaPlatformInitiator.initiateService()] HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
2019-06-13 04:39:40,509 [main] DEBUG [org.hibernate.query.spi.NamedQueryRepository.checkNamedQueries()] Checking 0 named HQL queries
2019-06-13 04:39:40,509 [main] DEBUG [org.hibernate.query.spi.NamedQueryRepository.checkNamedQueries()] Checking 0 named SQL queries
2019-06-13 04:39:40,513 [main] DEBUG [org.hibernate.internal.SessionFactoryRegistry.<init>()] Initializing SessionFactoryRegistry : org.hibernate.internal.SessionFactoryRegistry@34e10162
2019-06-13 04:39:40,514 [main] DEBUG [org.hibernate.internal.SessionFactoryRegistry.addSessionFactory()] Registering SessionFactory: bba8ac5f-afd5-4b89-ba16-77f5c980fa0e (<unnamed>)
2019-06-13 04:39:40,515 [main] DEBUG [org.hibernate.internal.SessionFactoryRegistry.addSessionFactory()] Not binding SessionFactory to JNDI, no JNDI name configured
DEV cmdline: DEV cmdline:
cat /proc/23517/cmdline
/usr/bin/java-Djava.util.logging.config.file=/opt/tomcat/apache-tomcat-9.0.20/conf/logging.properties-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager-Djdk.tls.ephemeralDHKeySize=2048-Djava.protocol.handler.pkgs=org.apache.catalina.webresources-Dorg.apache.catalina.security.SecurityListener.UMASK=0027-Dignore.endorsed.dirs=-classpath/opt/tomcat/apache-tomcat-9.0.20/bin/bootstrap.jar:/opt/tomcat/apache-tomcat-9.0.20/bin/tomcat-juli.jar-Dcatalina.base=/opt/tomcat/apache-tomcat-9.0.20-Dcatalina.home=/opt/tomcat/apache-tomcat-9.0.20-Djava.io.tmpdir=/opt/tomcat/apache-tomcat-9.0.20/temporg.apache.catalina.startup.Bootstrapstart
PROD cmdline: PROD cmdline:
cat /proc/19765/cmdline
/usr/java/jdk1.8.0_202/bin/java.orig-javaagent:/java_agent/jelastic-gc-agent.jar=period=300,debug=0-XX:+UseStringDeduplication-XX:+UseG1GC-Xmaxf0.3-Xminf0.1-Xmx614M-Xmn30M-Xms32M-Djava.util.logging.config.file=/opt/tomcat/conf/logging.properties-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager-DReceiverIp=-DMagicPort=-XX:+UseCompressedOops-server-Djvm=tomcat-Djava.awt.headless=true-Djava.net.preferIPv4Stack=false-DjvmRid=-Djdk.tls.ephemeralDHKeySize=2048-Djava.protocol.handler.pkgs=org.apache.catalina.webresources-Dorg.apache.catalina.security.SecurityListener.UMASK=0027-Dignore.endorsed.dirs=-classpath/opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar-Dcatalina.base=/opt/tomcat-Dcatalina.home=/opt/tomcat-Djava.io.tmpdir=/opt/tomcat/temporg.apache.catalina.startup.Bootstrapstarttomcat
I'm the OP. 我是OP。 Problem solved. 问题解决了。
Was due to Jelastic not refreshing webapps folder following Tomcat deploy. 是由于Tomcat部署后Jelastic无法刷新webapps文件夹。 Therefore, old log4j2.xml was being used. 因此,正在使用旧的log4j2.xml。
Bob 鲍勃
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.