log4j, slf4j 업그레이드 적용기
https://wenmoe.github.io/spring/2020/05/01/log4j2.html 도움받은블로그
log4j 이슈가 발생했지만, 거의 대다수의 전자정부프레임웤 쓰시는 분들이 그러하듯 1.2X대라서 그냥 넘어갔는데..!
다시 권고사항대로 최신버전으로 업그레이드하라는 공지문이 올라왔다.
참고로 내 개발환경은 1.8 JDK라서 꼼짝없이 최신버전으로 업그레이드해야만했음 ㅎ
기존 pom.xml의 설정은 다음과 같다.
... 생략 ...
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${org.slf4j-version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${org.slf4j-version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${org.slf4j-version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.15</version>
<exclusions>
<exclusion>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
</exclusion>
<exclusion>
<groupId>javax.jms</groupId>
<artifactId>jms</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jdmk</groupId>
<artifactId>jmxtools</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jmx</groupId>
<artifactId>jmxri</artifactId>
</exclusion>
</exclusions>
<scope>runtime</scope>
</dependency>
... 생략 ...
okky에 검색해봤을때 어떤분이 본인은 slf4j를 지워버리는 것으로 해결보셨다고했는데
나는 log4j는 거의 사용하지 않고 대다수가 slf4j를 사용하고 있기 때문에 모두 수정하기에는 너무 아득해서 어떻게든지 라이브러리를 변경하는 것으로 해결봐야했다.
개발환경내에서 org.slf4j-version 버전은 1.5대로 설정되어있었음
slf4j의 최신버전은 https://www.slf4j.org/download.html 공식 사이트에 의하면 1.7.32. 버전이다.
라이브러리를 다운받아야하는 경우에는 저기로
아니면 걍 https://mvnrepository.com/ 여기다가 검색해서 xml값만 긁어오도록 알아서 ㄱ
pom.xml의 dependency hierarchy를 확인하면
log4j는 1.2.15 버전이고 slf4j는 1.5.10버전임
slf4j의 종속값이
1.2대의 log4j라서 최신버전으로 업데이트 권고가 들어온것이다
아...정말 모른척하고싶었는데~!
log4j는 1.2.17대에서 멈춰있었기에 이걸 아예 제거하고 업데이트 하는 수 밖에 없었다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${org.slf4j-version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${org.slf4j-version}</version>
<scope>runtime</scope>
</dependency>
는 버전을 업데이트 시켜주고
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${org.slf4j-version}</version>
<scope>runtime</scope>
</dependency>
의 경우 삭제 후
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.17.0</version>
<scope>runtime</scope>
</dependency>
로 변경해줌
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.17.0</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-1.2-api</artifactId>
<version>2.17.0</version>
<scope>runtime</scope>
</dependency>
는 아예 새로 작성
제일 걱정이였던게
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
==> 이친구는 아예 변경해줘야했는데 하위에 달린 exclusion들은 어떻게 매칭해줘야하나...고민이였다...
찾아봤는데 마땅히 답이 없어서 이것저것 도전해보다가
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.17.0</version>
<exclusions>
<exclusion>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
</exclusion>
<exclusion>
<groupId>javax.jms</groupId>
<artifactId>jms</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jdmk</groupId>
<artifactId>jmxtools</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jmx</groupId>
<artifactId>jmxri</artifactId>
</exclusion>
</exclusions>
<scope>runtime</scope>
</dependency>
로 변경해주니 다행히 컴파일 과정에서 문제없이 작동했다.
|
cs |
혹시 작동안되시면
log/catalina.out 말고 localhost.날짜 로그 확인하시길
나는 개발서버도 java -version 했을때 1.8이라서 맞춰있는줄 알았는데
javac -version 했을때 1.7이라서 버전이 계속 맞지않다는 오류가 발생했었음~!
열받아~!