2016-06-17 4 views
0

log4j 1.x에서 log4j 2.x (2.6 정확하게)로 마이그레이션하려고합니다. Logger.setLevel() 같은 메소드는 org.apache.log4j.Logger (log4j-api 패키지)에서 사용할 수 없지만 org.apache.log4j.core.Logger (log4j-core 패키지)에서 사용할 수 있습니다.log4j2 코어 패키지 대 log4j2 API 사용

그래서 기본적으로 핵심 클래스를 사용해야합니다. 그게 뭐가 잘못 됐어? 또는 내가 간과하고있는 것이 있습니까?

+0

왜'setLevel()'이 필요합니까? Log4J는 텍스트 파일 (XML)로 구성되어야합니다. 어쨌든이 페이지를 참조하십시오 : https://logging.apache.org/log4j/2.x/manual/customconfig.html – Andreas

+0

@ Andreas JMX에서 로그 수준을 변경할 수 있습니다. 그것이 log4j 1.x를 사용하여 수행 된 방법이었습니다 2.x에서 더 좋은 방법이 있습니까? –

+0

<루트 레벨 = "오류"> 에서 log4j2.xml을 사용하는 이유는 무엇입니까? 그런 다른 설정을 사용할 수도 있습니다. – user2699706

답변

0

log4j2 코어의 setLevel 메소드와 관련된 javadoc에서 "이 메소드는 공용 API를 통해 공개되지 않으며 주로 유닛 테스트를 위해 제공됩니다."

및 from log4j2 website - "Log4j 1.x와 달리 공개 Log4j 2 API는 appenders 및 필터를 추가, 수정 또는 제거하거나 구성을 조작하는 메소드를 노출하지 않습니다."

& log4j2 웹 사이트 FAQ 페이지에서 로그 수준을 변경할 수있는 방법을 발견했습니다. 여전히 핵심 패키지를 사용했지만 올바른 방법으로 생각됩니다.

// org.apache.logging.log4j.core.config.Configurator; 

Configurator.setLevel("com.example.Foo", Level.DEBUG); 

// You can also set the root logger: 
Configurator.setRootLevel(Level.DEBUG);