Search code examples
springspring-boottomcatlog4jslf4j

confront with slf4j present error in separated tomcat run


I have coded a project in spring boot and application runs successfully on embedded tomcat but I confront with errors in separated tomcat.

I saw some related questions in stack but none of them was the solution for me for example I added

RootLogger.level = info 

and excluded log4j-to-slf4j

I got stuck and do not khow where the problem is coming from

this is my pom.xml file:

<dependencies>
   <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter</artifactId>
      <version>3.0.0</version>
      <exclusions>
         <exclusion>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
         </exclusion>
         <exclusion>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-to-slf4j</artifactId>
         </exclusion>
      </exclusions>

   </dependency>

   <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-logging</artifactId>
      <version>3.0.0</version>
   </dependency>
   <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
   </dependency>

   <dependency>
      <groupId>org.mariadb.jdbc</groupId>
      <artifactId>mariadb-java-client</artifactId>
      <version>3.1.0</version>
   </dependency>

   <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.13.0</version>
   </dependency>
   <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
   </dependency>
   <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-jpa</artifactId>
   </dependency>
   <dependency>
      <groupId>org.springdoc</groupId>
      <artifactId>springdoc-openapi-ui</artifactId>
      <version>1.6.4</version>
   </dependency>
   <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.18.4</version>
      <scope>provided</scope>
   </dependency>
   <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-log4j2</artifactId>
   </dependency>

   <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-tomcat</artifactId>
      <scope>provided</scope>
   </dependency>

   <dependency>
      <groupId>org.apache.tomcat.embed</groupId>
      <artifactId>tomcat-embed-jasper</artifactId>
      <scope>provided</scope>
   </dependency>

   <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>jstl</artifactId>
   </dependency>

   <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-integration</artifactId>
      <version>3.0.0</version>
   </dependency>

   <dependency>
      <groupId>org.springframework.integration</groupId>
      <artifactId>spring-integration-ip</artifactId>
      <version>6.0.0</version>
   </dependency>

</dependencies>

and this id my application configuration:

spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
spring.datasource.url=jdbc:mariadb://localhost:3306/testApp
spring.datasource.username=root
spring.datasource.password=
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MariaDBDialect
tcp.server.port=1234
rootLogger.level = info

my logs:


8-Dec-2022 09:42:08.642 INFO [http-nio-8088-exec-15] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive [C:\Program Files\Apache Software Foundation\Tomcat 10.0\webapps\demo-0.0.1-SNAPSHOT.war] has finished in [4,986] ms
28-Dec-2022 09:42:15.953 INFO [http-nio-8088-exec-20] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
28-Dec-2022 10:23:17.001 INFO [http-nio-8088-exec-33] org.apache.catalina.startup.HostConfig.undeploy Undeploying context [/demo-0.0.1-SNAPSHOT]
28-Dec-2022 10:23:25.390 INFO [http-nio-8088-exec-28] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive [C:\Program Files\Apache Software Foundation\Tomcat 10.0\webapps\demo-0.0.1-SNAPSHOT.war]
28-Dec-2022 10:23:29.976 INFO [http-nio-8088-exec-28] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
28-Dec-2022 10:23:30.208 SEVERE [http-nio-8088-exec-28] org.apache.catalina.startup.HostConfig.deployWAR Error deploying web application archive [C:\Program Files\Apache Software Foundation\Tomcat 10.0\webapps\demo-0.0.1-SNAPSHOT.war]
    java.lang.IllegalStateException: Error starting child
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:729)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:698)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:747)
        at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1027)
        at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:547)
        at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1780)
        at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
        at java.base/java.lang.reflect.Method.invoke(Method.java:578)
        at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:293)
        at java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:809)
        at java.management/com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:802)
        at org.apache.catalina.manager.ManagerServlet.check(ManagerServlet.java:1592)
        at org.apache.catalina.manager.HTMLManagerServlet.upload(HTMLManagerServlet.java:291)
        at org.apache.catalina.manager.HTMLManagerServlet.doPost(HTMLManagerServlet.java:209)
        at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:709)
        at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:792)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:223)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158)
        at org.apache.catalina.filters.CsrfPreventionFilter.doFilter(CsrfPreventionFilter.java:203)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158)
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158)
        at org.apache.catalina.filters.HttpHeaderSecurityFilter.doFilter(HttpHeaderSecurityFilter.java:126)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:661)
        at org.apache.catalina.valves.RequestFilterValve.process(RequestFilterValve.java:378)
        at org.apache.catalina.valves.RemoteAddrValve.invoke(RemoteAddrValve.java:56)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:119)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
        at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:356)
        at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)
        at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
        at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:870)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1762)
        at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
        at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
        at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.base/java.lang.Thread.run(Thread.java:1589)
    Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/demo-0.0.1-SNAPSHOT]]
        at org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:440)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:198)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:726)
        ... 45 more
    Caused by: org.apache.logging.log4j.LoggingException: log4j-slf4j-impl cannot be present with log4j-to-slf4j
        at org.apache.logging.slf4j.Log4jLoggerFactory.validateContext(Log4jLoggerFactory.java:70)
        at org.apache.logging.slf4j.Log4jLoggerFactory.newLogger(Log4jLoggerFactory.java:50)
        at org.apache.logging.slf4j.Log4jLoggerFactory.newLogger(Log4jLoggerFactory.java:33)
        at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:53)
        at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:33)
        at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:391)
        at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155)
        at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:132)
        at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:273)
        at org.springframework.core.annotation.IntrospectionFailureLogger.getLogger(IntrospectionFailureLogger.java:75)
        at org.springframework.core.annotation.IntrospectionFailureLogger$2.isEnabled(IntrospectionFailureLogger.java:49)
        at org.springframework.core.annotation.AnnotationUtils.handleIntrospectionFailure(AnnotationUtils.java:1126)
        at org.springframework.core.annotation.AnnotationsScanner.processClassHierarchy(AnnotationsScanner.java:234)
        at org.springframework.core.annotation.AnnotationsScanner.processClassHierarchy(AnnotationsScanner.java:172)
        at org.springframework.core.annotation.AnnotationsScanner.processClass(AnnotationsScanner.java:109)
        at org.springframework.core.annotation.AnnotationsScanner.process(AnnotationsScanner.java:92)
        at org.springframework.core.annotation.AnnotationsScanner.scan(AnnotationsScanner.java:82)
        at org.springframework.core.annotation.TypeMappedAnnotations.scan(TypeMappedAnnotations.java:248)
        at org.springframework.core.annotation.TypeMappedAnnotations.get(TypeMappedAnnotations.java:155)
        at org.springframework.core.annotation.TypeMappedAnnotations.get(TypeMappedAnnotations.java:137)
        at org.springframework.core.annotation.OrderUtils.findOrder(OrderUtils.java:123)
        at org.springframework.core.annotation.OrderUtils.getOrderFromAnnotations(OrderUtils.java:116)
        at org.springframework.core.annotation.AnnotationAwareOrderComparator.findOrderFromAnnotation(AnnotationAwareOrderComparator.java:75)
        at org.springframework.core.annotation.AnnotationAwareOrderComparator.findOrder(AnnotationAwareOrderComparator.java:68)
        at org.springframework.core.OrderComparator.getOrder(OrderComparator.java:128)
        at org.springframework.core.OrderComparator.getOrder(OrderComparator.java:116)
        at org.springframework.core.OrderComparator.doCompare(OrderComparator.java:86)
        at org.springframework.core.OrderComparator.compare(OrderComparator.java:73)
        at java.base/java.util.TimSort.countRunAndMakeAscending(TimSort.java:355)
        at java.base/java.util.TimSort.sort(TimSort.java:220)
        at java.base/java.util.Arrays.sort(Arrays.java:1307)
        at java.base/java.util.ArrayList.sort(ArrayList.java:1721)
        at org.springframework.core.annotation.AnnotationAwareOrderComparator.sort(AnnotationAwareOrderComparator.java:111)
        at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:169)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5169)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
        ... 46 more


Solution

  • Stack Overflow link

    This tip finally solved my problem. Thanks to its publisher