◽ Java language/Java

[Java] Java Application Project, Java Project : migration log4j1.x to log4j2.15.0 or 2.16.0 취약점 처리 ( log4j2.xml 설정 ) + multiple file write, configuration location setting.

kkk20000a 2021. 12. 14. 19:52

Migration log4j1.x -> log4j 2.16.0

  어제와 동일하게 보안 이슈로 Java project를 급히 수정하였다. 인터넷에 돌아다니는 글들 서핑을 얼마나 했는지 모르겠는데, 방법을 생각보다 너무도 간단하여 공유하고자 글을 남긴다.


 

1. 어제는 공식 홈페이지에서 2.15.0이 었는데, 지금은 2.16.0으로 올라간 상태다. 2.15.0 cr1에까지 영향을 끼친다고 하여 헷갈리 수 있어서 급히 마이너버전을 올린 것으로 보인다. 

여기서 다운받게되면 jar파일들이 많이 나온다. 필요한 파일은 "log4j-core, log4j-api, log4j-slf4j-impl, log4j-jcl" 정도가 되겠고, 많이 쓰는 것은 주로 log4j-api, log4j-core가 쓰인다.

공식 사이트 : https://logging.apache.org/log4j/2.x/download.html

 

 

2. 바로 전에 썼던 글과 동일하게 수정될 부분은 "Logger log = Logger.getLogger(*.class)"가 "Logger log = LogManager.getLogger(*.class)"로 변경되는 것이 대부분일 것이다. 물론 더 깊이 라이브러리를 이용하였다면, 수정 할 부분은 더 있을 수 있다.

2021.12.13 - [◽ JAVA] - [Java] JSP/Servlet, SpringFraemwork low version : migrate log4j1 to log4j 2.x : log4j 2.15.0 업데이트 "log4j 취약점"

 

 

 

3. java Application은 따로 web.xml이나 기타 .xml에서 구조를 정의하고 있지 않기 때문에, java main 함수 실행 시 옵션을 넣어주면 된다. 먼저 이전글과 동일하게 "log4j2.xml"을 만들어주는데 여기에서 자신의 프로젝트에는 main함수가 하나라면 /src/나 /classes/에 넣어두면 자동으로 log4j2가 경로를 찾아간다.

만약 여러개의 서비스를 하기 위해서 한 프로젝트 내에 여러 메인 함수가 있어 각각 실행을 하는 프로젝트라면 실행 때 마다 로그 또한 분리하여 기록해야하기 때문에, 각기 다른 경로에 넣어 자바 실행 때, 경로를 참조해준다.

2021.12.13 - [◽ JAVA] - [Java] JSP/Servlet, SpringFraemwork low version : migrate log4j1 to log4j 2.x : log4j 2.15.0 업데이트 "log4j 취약점"

 

 

 

4. 아래의 그림과 같이 "-Dlog4j.configurationFile=" 설정을 넣어줘서 java 실행 시, 경로를 찾도록 명시해준다.


참고 :

https://logging.apache.org/log4j/2.x/download.html