Nowe zgłoszenie w systemie: #25519
Data utworzenia: 2023-10-05
Temat: Migrating Tomcat 8/9 and a single webapp to Java 17 disconfigures Tomcat 
logs
Hi Chris, We were already considering the jump to log4j for a number of reasons 
(Removal of an old custom formatter, adding BurstFilter) and the issue just 
made it easier. But I agree, the issue was not really solved, just worked 
around. It only happens when using JDK17 though, in either Tomcat 8.5 or 9. If 
you have any suggestions, I can check them out. Thanks for your help. > Em 2 de 
out. de 2023, à(s) 19:07, Christopher Schultz  escreveu: > > Alcides, > > On 
9/29/23 15:34, Alcides Moraes wrote: >> Forgot to expand the 
webapps/WEB-INF/lib jars as well… >> root@8ad4f1dcd125:/usr/local/tomcat# find 
./ -type f -name logging.properties >> ./conf/logging.properties >> 
./webapps/corporativo-comum/WEB-INF/lib/org/springframework/boot/logging/java/logging.properties
 >> So there’s springboot's logging.properties. Should it really affect 
tomcat’s logging? > > I wouldn't expect it to. But something is definitely 
triggering a re-load of the global logging configuration. > > If you have 
decided to move-on to log4j2, then that's great. But if you are only doing that 
because you can't explain what's happening, I think it would be better for you 
to track-down the root problem. If you don't track that down, you might be 
ignoring something important that really needs to get fixed. > > -chris > >>> 
Em 29 de set. de 2023, à(s) 16:18, Alcides Moraes  escreveu: >>> >>> Hi 
Christopher, >>> >>> Thanks for the suggestion, we do add some jars to Tomcat 
lib (mainly Prometheus, Hazelcast) >>> I expanded every jar inside tomcat/lib 
and ran a find command. >>> >>> root@05ae85e03d7d:/# find ./ -type f -name 
logging.properties >>> ./usr/local/tomcat/conf/logging.properties >>> 
./opt/java/openjdk/conf/logging.properties >>> >>> The only other 
logging.properties is the one from JDK. I tried changing its content just to 
see if that was what was being used, but it had no effect. >>> >>> So the issue 
still remains, but we have worked around it by configuring tomcat to use log4j2 
as per this documentation: >>> 
https://logging.apache.org/log4j/2.x/log4j-appserver.html >>> With this and the 
log4j-jul bridge, all logs are now formatted correctly. >>> >>>> Em 29 de set. 
de 2023, à(s) 08:56, Christopher Schultz  escreveu: >>>> >>>> Alcides, >>>> 
>>>> On 9/28/23 14:55, Alcides Moraes wrote: >>>>> Hello everyone, >>>>> I’m 
new to the list even though I’ve been a Java web developer for many years, I’ve 
never had the need to post here, but this time I think I may have stumbled upon 
a bug, and nothing turns up online on this issue. >>>>> We’re migrating our 
containerized legacy webapps from Java 8/11 to Java 17. They all ran on Tomcat 
8.5, now we’re upgrading to 9. >>>>> We customize a base image from 
tomcat:9.0.80-jdk17-temurin-focal. Amongst other things, we add a 
logging.properties to customize tomcat’s log format. >>>>> This always worked 
well, but after our upgrade to Java 17, there’s a weird behavior that has 
stumped us. >>>>> During Tomcat’s startup, the logs are formatted correctly as 
we specify in logging.properties. However, after a certain point in the logs, 
the logs revert to the “default” JUL/JULI format. >>>>> Apart from this, 
everything works as expected. But we need the formatted logs because we parse 
them with LogStash and OpenSearch. >>>>> Here’s an excerpt of the logs when 
this happens: >>>>> local-corporativo-comum-1 | 2023-09-27T18:57:34.188 INFO 
[org.apache.coyote.http11.Http11NioProtocol] (thread-1) Initializing 
ProtocolHandler ["http-nio-8080"] >>>>> local-corporativo-comum-1 | 
2023-09-27T18:57:34.266 INFO [org.apache.catalina.startup.Catalina] (thread-1) 
Server initialization in [3419] milliseconds >>>>> local-corporativo-comum-1 | 
2023-09-27T18:57:34.606 INFO [com.hazelcast.config.UrlXmlConfig] (thread-1) 
Configuring Hazelcast from 'file:/usr/local/tomcat/conf/hazelcast-local.xml'. 
>>>>> local-corporativo-comum-1 | 2023-09-27T18:57:36.775 INFO 
[org.apache.catalina.core.StandardService] (thread-1) Starting service 
[Catalina] >>>>> local-corporativo-comum-1 | 2023-09-27T18:57:36.789 INFO 
[org.apache.catalina.core.StandardEngine] (thread-1) Starting Servlet engine: 
[Secure Web Server] >>>>> local-corporativo-comum-1 | 2023-09-27T18:57:36.863 
INFO [org.apache.catalina.startup.HostConfig] (thread-1) Diretório de 
instalação da aplicação web [/usr/local/tomcat/webapps/corporativo-comum] >>>>> 
local-corporativo-comum-1 | 2023-09-27T18:57:52.647 INFO 
[br.leg.senado.util.tomcat.DataSourceFactory] (thread-1) Criando instância do 
datasource corporativo-comumDS >>>>> local-corporativo-comum-1 | set. 27, 2023 
6:57:55 PM br.leg.senado.util.tomcat.DataSourceFactory getObjectInstance >>>>> 
local-corporativo-comum-1 | INFORMAÇÕES: Criando instância do datasource 
monitoraaplDS >>>>> local-corporativo-comum-1 | set. 27, 2023 6:57:55 PM 
org.apache.catalina.core.ApplicationContext log >>>>> local-corporativo-comum-1 
| INFORMAÇÕES: 1 Spring WebApplicationInitializers detected on classpath >>>>> 
local-corporativo-comum-1 | set. 27, 2023 6:57:55 PM 
org.apache.catalina.core.ApplicationContext log >>>>> local-corporativo-comum-1 
| INFORMAÇÕES: Initializing Spring root WebApplicationContext >>>>> 
local-corporativo-comum-1 | 18:57:55.751 [main] INFO 
org.springframework.web.context.ContextLoader - Root WebApplicationContext: 
initialization started >>>>> The red text is tomcat logging using the defaults 
(which localize log levels to our locale which is pt-br). >>>>> I suspect that 
the point where this happens is when the webapp is being initialized. A webapp 
shouldn’t be able to interfere with Tomcat’s log behavior, right? >>>>> The 
webapp does not use JUL, it uses logback, and it logs correctly during and 
after its startup. >>>>> The logs you see @ 18:57:52 that says “Criando 
instância...” are of custom datasource resources specified in a context.xml 
file. >>>>> They have a custom factory class, passed from a custom jar in 
tomcat's class path. >>>>> This jar has worked and logged correctly since ever, 
we didn’t even recompile them to Java 17, we kept them as they were (Java 8). 
>>>>> I’ve tried changing the way this component logs, by calling 
org.apache.juli instead of java.util.logging, removed all logging whatsoever, 
but nothing changes this behavior. >>>>> Any suggestions on debugging this? If 
you need more info don’t hesitate to ask. >>>>> Thanks in advance for any help 
on this. >>>> >>>> I feel like I've heard of things like this happening before. 
It had something to do with an application re-initializing and having a private 
logging.properties file which ended up updating the global logging 
configuration. >>>> >>>> Can you search the entire (container's) disk for 
logging.properties files /and also all the JAR files you are using/ to see if 
there is a stray file somewhere that could be picked-up at some point after 
initial boot? >>>> >>>> -chris >>>> >>>> 
--------------------------------------------------------------------- >>>> To 
unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org >>>> For additional 
commands, e-mail: users-h...@tomcat.apache.org >>>> >>> > > 
--------------------------------------------------------------------- > To 
unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org > For additional 
commands, e-mail: users-h...@tomcat.apache.org > 
--------------------------------------------------------------------- To 
unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional 
commands, e-mail: users-h...@tomcat.apache.org
---
Załączniki:

Reply via email to