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 > <ch...@christopherschultz.net> 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 <alcides.n...@gmail.com> >>> 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 >>>> <ch...@christopherschultz.net> 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