2009-12-04 1 views
1

RCP 애플리케이션을 개발 중이며 log4j를 사용하여 로그를 생성하고 있습니다. 예외가 기록 될 때마다 응용 프로그램 버전을 식별하는 행을 로그 파일에 포함하려고합니다.log4j 로그 파일의 플러그인 버전

log4j.properties 파일의 log4j.appender.file.layout.ConversionPattern 행을 강제로 작성하면 간단히 기록 할 수 있지만 버전을 변경할 때마다 변경해야한다는 것을 기억해야합니다. 번호, 내 신경 너무 오류가 발생하기 쉬운입니다.

log4j.properties 파일 또는 프로그래밍 방식으로 응용 프로그램 버전 번호를 변경하면 기록 된 값이 변경되는 방식이 있습니까?

감사합니다.

답변

3

프로그래밍 방식으로 log4j를 구성 할 수 있기를 원하는 것 같습니다. log4j PropertyConfigurator.configure() 메소드를 사용하여 로깅 특성을 포함하는 특성 오브젝트를 제공 할 수 있습니다. 변환 패턴에서 버전 번호를 상수로 지정할 수 있습니다. 또한 응용 프로그램을 정의하는 기본 플러그인 (번들)에서 버전 번호를 얻는 것이 좋습니다. 따라서 일반 Eclipse 버전 정보를 사용하여 정의 할 수 있습니다. 다음과 같은 코드를 사용할 수 있습니다 :

public String getVersion() 
{ 
    Bundle bundle = Platform.getBundle("com.yourcompany.yourproject.pluginid"); 
    Dictionary headers = bundle.getHeaders(); 
    return (String)headers.get("Bundle-Version"); //$NON-NLS-1$ 
} 
+0

대단히 감사합니다, Francis! –

0

당신은 this thread에서처럼 plugin.properties 심지어 custom my.properties 파일의 버전 정보를 얻을 수 있도록 응용 프로그램을 요청할 수 있습니다 : 코드 내에서 다음

public class MyPlugin extends AbstractUIPlugin { 

    protected final static String MY_PROPERTIES = "my.properties";  
    protected PropertyResourceBundle myProperties; 

    public PropertyResourceBundle getMyProperties(){ 

    if (myProperties == null){ 
    try { 
     myProperties = new PropertyResourceBundle(
     FileLocator.openStream(this.getBundle(), 
      new Path(MY_PROPERTIES),false)); 
    } catch (IOException e) { 
     this.logError(e.getMessage()); 
    } 
    return myProperties; 
    } 
... 

당신이 부를 것이다 :

MyPlugin.getInstance().getMyProperties().getString("foo"); 

이것은 세션 기간 동안 정적 변수에 저장할 수 있으며 log4j 출력에서 ​​재사용 할 수 있습니다 티.

관련 문제