2017-04-01 19 views
1

나는 log4j 1.x 버전이 EOL 된 것처럼 종속 관계를 제거하려고합니다. 내 코드는 slf4j-log4j12 bridge를 사용합니다. maven에서 slf4j-log4j에 대한 중앙 컴파일 종속성은 버전 1.2.17에서 log4j를 표시하고 업데이트 열은 2.8.1을 표시합니다.slf4j-log4j bridge with log4j 2.8.1

그래서 log4j-api-2.8.1이 log4j-1.2.17 대신 기본적으로 사용된다는 희망으로 build.gradle에서 다음을 시도했습니다. 그러나 그것은 작동하지 않는 것 같습니다. 종속 항아리에는 여전히 log4j-1.2.17이 있습니다.

저는 물어보고 싶었습니다. 전혀 허용되지 않는 무언가입니까? 나는. log4j 2.8.1 버전이나 2.x 버전의 slf4j-log4j bridge가 없습니까? 본질적으로 log4j-api-2.8.1을 사용하도록 코드를 마이그레이션해야합니다. 아니면 여기에 뭔가 빠졌나요?

dependencies { 
    compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.8.1' 
    compile group: 'org.slf4j', name: 'slf4j-log4j12', version: '1.7.25' 
} 

답변

3

slf4j-log4j12은 log4j 버전 1.2에 대한 바인딩입니다. log4j-slf4j-impl이라는 log4j2 Y 인딩이 필요합니다.

이 log4j2와 함께 SLF4J를 사용하려면이 필요합니다 :

  • 의 log4j-API (2.8.1)
  • log4j에 코어 (2.8.1)
  • 의 log4j-SLF4J-IMPL (2.8 당신의 log4j 버전 1.2 이상 어떤 구현 및/또는 의존성이있는 경우 0.1)
  • SLF4J-API (1.7.25)

은 또한 필요합니다 :

,
  • 의 log4j-1.2-API 그러나 (2.8.1)

, 당신은 어떤 경우에 다음과 같은 종속성이 포함되지 않아야합니다 :

  • 의 log4j - 투 - SLF4J (2.X)
  • log4j (1.2.x)
+0

하나의 질문은 내 주요 질문에 넣어야할지 모르겠다. Slf4j 1.7.25 페이지 [here] (https://www.slf4j.org/apidocs/index.html)에서는 org.apache.log4j. * 패키지를 끝으로 나열합니다. 그러나 실제 항아리에는 그러한 항아리가 들어 있지 않습니다. 나는 여기서 무슨 일이 일어나고 있는지 이해할 수 없다. 도와주세요. 또한 Log4j-api-2.8.1 패키지는 이제 org.apage.logging.log4j.로 이름 공간이 지정됩니다. * 그래서 어떻게 Sl4j-api 1.7.25와 맞습니까? – WinCPP

+0

@WinCPP : slf4j apidocs의 org.apache.log4j. * 패키지는 "log4j-to-sl4j"입니다. 이것이 주요 API에없는 이유입니다. 그리고 slf4j로 피팅 구현은 "log4j-sl4j-impl"에 있습니다. – sazzad

+0

@Mike HM 오타를 알아 줘서 고마워. – sazzad