본문 바로가기
Java

spring boot log4j 업데이트 에러 발생시

by pikisvill 2021. 12. 13.

현재 프로젝트

spring boot + log4j 2.12.1 + maven

==> 2021.12.15 기준으로 2.15도 문제가 있다고 하니 2.16으로 업데이트 해야합니다.

 

1. 메이븐에 로그 관련 추가

<properties>
		<log4j2.version>2.16.0</log4j2.version>
</properties>

 

2. tomcat 에 테스트시 만약 오류 발생 하면

==> (지정된 파일을 찾을 수 없습니다) 하면서 이전 log4j jar 파일을 찾는 에러

13-Dec-2021 15:40:02.489 심각 [http-nio-91-exec-6] org.apache.catalina.core.ApplicationContext.log 서블릿 [dispatcherServlet]을(를) 위한 Servlet.init() 호출이 예외를 발생시켰습니다.
	java.lang.IllegalStateException: java.io.FileNotFoundException: D:\apache-tomcat-9.0.30\webapps\XXX\WEB-INF\lib\log4j-api-2.12.1.jar (지정된 파일을 찾을 수 없습니다)
		at org.apache.catalina.webresources.AbstractSingleArchiveResourceSet.getArchiveEntry(AbstractSingleArchiveResourceSet.java:101)
		at org.apache.catalina.webresources.AbstractArchiveResourceSet.getResource(AbstractArchiveResourceSet.java:256)
		at org.apache.catalina.webresources.StandardRoot.getResourceInternal(StandardRoot.java:282)
		at org.apache.catalina.webresources.Cache.getResource(Cache.java:62)
		at org.apache.catalina.webresources.StandardRoot.getResource(StandardRoot.java:217)
		at org.apache.catalina.webresources.StandardRoot.getClassLoaderResource(StandardRoot.java:226)
		at org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2303)
		at org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:865)
		at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1334)
		at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1188)
		at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:152)
		at javax.servlet.GenericServlet.init(GenericServlet.java:158)
		at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1134)
		at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:777)
		at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:688)
		at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:461)
		at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:384)
		at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:312)
		at org.apache.catalina.core.StandardHostValve.custom(StandardHostValve.java:394)
		at org.apache.catalina.core.StandardHostValve.status(StandardHostValve.java:253)
		at org.apache.catalina.core.StandardHostValve.throwable(StandardHostValve.java:348)
		at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:148)
		at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
		at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:678)
		at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
		at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
		at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:367)
		at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
		at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:860)
		at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1598)
		at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
		at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
		at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
		at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
		at java.lang.Thread.run(Thread.java:748)

webapp 폴더내 해당 프로젝트 파일 및

apache-tomcat-9.0.56\work\Catalina\localhost 에 있는 프로젝트들 전부 삭제

 

3. maven deploy 시 이전 log4j jar 와 업데이트 된 log4j jar 파일이 같이 있는 경우
==> 사용하고 있는 log4j 의 .m2 경로를 찾아서 이전 버전 폴더 삭제
==> log4j-api와 log4j-to-slf4j 를 사용중이여서 해당 폴더에서 이전 버전을 삭제함
==> C:\Users\XXX\.m2\repository\org\apache\logging\log4j\log4j-api 
==> C:\Users\XXX\.m2\repository\org\apache\logging\log4j\log4j-to-slf4j 

==> 그래도 생기면 target 폴더도 초기화(deploy 결과 폴더)

 

댓글