2014-12-01 1 views
3

Apache manual 단순히 상태 : "Log4j를 2Log4j 2 구성 : XML 대 JSON?

구성은 1 ~ 4의 방법으로 수행 할 수 있습니다.
XML로 작성된 구성 파일을 통해 , JSON 또는 YAML
프로그래밍하는 ConfigurationFactory 등을 작성하여 구성 구현
구성 인터페이스에 노출 된 API를 호출하여 기본 구성에 구성 요소를 추가하여 호출
프로그래밍 방식으로 내부 로거 클래스의 메서드를 호출하여

이 4 가지 방법 중 하나를 선호하는 경향이 보이면 듣고 싶습니까?
이 질문은 Log4j (버전 1) 구성 방식을 .properties 파일에서 XML 형식으로 변경하는 것입니다. 문제에 대한 답변을 검색하고 올바른 대답을 얻지 만 사용중인 구성 방법과는 크게 다르지 않습니다.

새로운 log4j (버전 2) 프로젝트가 생겼습니다. 기본 XML 방식 (이유 : 미학과 약간의 성능 이점 (?))에 대해 JSON을 구성 형식으로 사용하고 싶습니다.

XML을 통해 JSON 구성 형식을 선택하면 문제가 발생하거나 많은 기능을 사용할 수 없습니까?

정적 구성 파일 대신 프로그래밍 방식을 사용하는 이유는 무엇입니까?

(경우에 따라) 단일 구성 파일을 응용 프로그램 서버 (서버의 일부 파일 경로에서)로 읽는 것이 이상적입니다. 이 단일 .json 파일은 응용 프로그램 당 로그 수준을 적용하고 응용 프로그램 당 최소 3 개의 다른 로그 (일반, 오류, 사용자 지정 로그 수준)를 생성하는 데 사용됩니다. 서버에서 실행되도록 설계된 응용 프로그램은 10 개 미만입니다.

답변

5

XML 또는 JSON을 사용하면 성능상의 이점이나 단점이 없습니다. 개인적으로 나는이 두 가지 이유로 XML을 선호 : (하지만 그들은 그래서 ... 당신에게 달려 물론 큰 문제가되지 않습니다)

  • JSON 구성이 클래스 경로에있는 잭슨 jar 파일이 필요하므로 여분의 의존성이있다가 . XML은 Java에 내장 된 XML 구문 분석기를 사용합니다.
  • log4j2 설명서의 모든 예제는 JSON이 아닌 XML을 사용하므로 구문을 변환해야합니다. XML을 선택하면 매뉴얼에서 복사하여 붙여 넣기를 할 수 있습니다.

프로그래밍 방식의 구성은 권장하지 않습니다. 이것은 더 복잡하며 구현 세부 사항에 따라 달라지며 나중에 달라질 수 있습니다. IMHO 거의 또는 전혀 도움이되지 않는 작업이 될 것입니다.

설명하는 사용 사례의 경우 구성에 system properties을 사용할 수 있으므로 여러 응용 프로그램은 동일한 구성을 공유하지만 각 응용 프로그램의 속성 값을 변경하여 다른 위치에 기록 할 수 있습니다.

+0

필자는 "XML 방식이 맘에 들지 않는다"라는 주장보다 훨씬 광범위하게 지원된다는 점에 동의해야한다고 생각합니다.] 시스템 속성 팁 주셔서 감사합니다! 내가 사용할 수있는 것 같아서 더 조사해야 해. – straville

+1

도움이 된다니 기쁘다.가치가있는 것을 위해 log4j2 xml 구문은 log4j-1.2보다 훨씬 깨끗합니다. –