log4j2 로 마이그레이션
Sterling™ Order Management 시스템 코드에서 주로 로깅에 사용되며 고객 코드에서도 사용되는 YFCLogCategory 클래스는 log4j 1.x 클래스인 org.apache.log4j.Category 을 확장하지 않습니다. YFCLogCategory 클래스에서 정의하지 않은 메소드를 사용하는 경우 이 릴리스에서 사용자 정의 코드에 영향을 줍니다. YFCLogCategory 클래스에서 정의되지 않고 org.apache.log4j.Category 상위 클래스에서 사용 가능한 메소드는 지원되지 않습니다.
YFCLogCategory 클래스에 추가되어 사용자 정의 코드의 런타임 실패가 발생하지 않도록 합니다. 그러나 이는 더미 메소드이며 이후 릴리스에서 제거될 수 있습니다.public void log(Object level, Object obj)public void setLevel(Object level)public boolean isEnabledFor(Object level)
YFCLogCategory.getLogger() 메소드는 지원되지 않습니다. 대신 YFCLogCategory.instance(Class.class) 메소드를 사용하십시오.
private static YFCLogCategory logger = YFCLogCategory.instance(MyClassName.class);YFCLogCategory인스턴스를org.apache.log4j.Category또는org.apache.log4j.Logger로 캐스트하는 경우 지원되지 않습니다. 새 코드를 작성할 때YFCLogCategory의 인스턴스를org.apache.log4j.Logger또는org.apache.log4j.Category로 캐스트하면 컴파일되지 않습니다. 이러한 캐스트가 있는 기존 사용자 정의 코드의 경우 사용자 정의 코드는 런타임 시ClassCastException를 발견합니다. 예를 들어, 다음 코드 패턴의 #2 및 #3 행은 지원되지 않습니다.YFCLogCategory LOGGER = YFCLogCategory.instance(MyClass.class.getName()); org.apache.log4j.Logger apLogger=(org.apache.log4j.Logger)LOGGER; // Not supported org.apache.log4j.Category apCategory=(org.apache.log4j.Category)LOGGER; // Not supportedlog(Level level, Object)를 호출하는 경우,YFCLogCategory클래스에서 제공하는 error (Object) 또는 debug (Object) 와 같은 특정 메소드로 대체하십시오.setLevel(Level level)를 호출하는 경우 이를 삭제해야 합니다. log4j2 의 로거 레벨은 log4j2 API에서 지원되지 않으므로 변경할 수 없습니다. 로그 레벨의 추가 관리는 코드에 의해 수행되며, 확장 로깅을 원하는 코드의 특정 부분에 대한 추적을 작성해야 합니다.- 호출하는 경우
isEnabledFor(Level level)isInfoEnabled 또는 isTimerEnabled 같은 특정 메서드로 대체하세요.
Sterling Order Management 시스템 은 보안상의 이유로 제공된 Jar에서 log4j 1.2.17 Jar 파일을 제거하므로 org.apache.log4j.* 클래스에 대한 모든 직접 호출을 제거해야 합니다. org.apache.log4j.* 클래스의 호출 또는 가져오기를 제거할 수 없는 경우, Apache 공식 사이트에서 다운로드하여 사용자 정의 패키지에 log4j 1.2.17 Jar를 포함해야 합니다.
org.apache.log4j.Logger를 제거하고YFCLogCategory를 사용하십시오.org.apache.log4j.Level를 제거하고YFCLogCategory에서 특정 메소드를 사용하십시오.
IBM 은 Apache log4j (v2 또는 v1) 클래스를 직접 사용하지 않도록 권장합니다. Sterling Order Management 시스템에서 기본 로깅 API의 변경사항에 노출되지 않도록 하는 YFCLogCategory를 사용할 수 있습니다.
log4j 1.x Jar에 종속된 써드파티 라이브러리가 있는 경우, 사용자 정의 패키지에서 패키징하는 써드파티 Jar 파일의 추출된 컨텐츠에 대해 다음 명령을 실행하여 해당 Jar를 검색하십시오.
jar -xvf <third-party jar>
grep -rnw 'org.apache.log4j'이 명령은 log4j 1.x Jar에 대한 종속성이 있는 클래스를 인쇄합니다. 결과를 찾으면 해당 Jar 파일의 업데이트된 버전이 사용 가능한지 확인해야 합니다.
일부 로깅 관련 써드파티 라이브러리 (예: slf4j 또는 commons-logging) 에는 log4j 1.x Jar 종속성이 있을 수 있지만 이러한 라이브러리를 무시할 수 있습니다.