log4j日志文件上的插件版本

log4j日志文件上的插件版本,log4j,eclipse-rcp,Log4j,Eclipse Rcp,我正在开发一个RCP应用程序,并使用log4j生成日志。每当记录异常时,我都希望在日志文件中包含一行代码来标识应用程序版本 我可以在log4j.properties文件的log4j.appender.file.layout.ConversionPattern行上强制执行,只需将其写下来,但是每次更改版本号时,我都必须记住要更改它,这对我来说太容易出错 在log4j.properties文件上或通过编程方式,是否有一种方法可以使记录的值随着我更改应用程序版本号而改变 谢谢。您可以要求应用程序从pl

我正在开发一个RCP应用程序,并使用log4j生成日志。每当记录异常时,我都希望在日志文件中包含一行代码来标识应用程序版本

我可以在log4j.properties文件的log4j.appender.file.layout.ConversionPattern行上强制执行,只需将其写下来,但是每次更改版本号时,我都必须记住要更改它,这对我来说太容易出错

在log4j.properties文件上或通过编程方式,是否有一种方法可以使记录的值随着我更改应用程序版本号而改变


谢谢。

您可以要求应用程序从
plugin.properties
甚至是
自定义my.properties
文件获取版本信息,如:

然后从代码中调用:


然后可以在会话期间将其存储在一个静态变量中,并在log4j输出中重用。

听起来您希望能够以编程方式配置log4j。可以使用log4j PropertyConfigurator.configure()方法提供包含日志属性的属性对象。在转换模式中,可以将版本号指定为常量。另外,我建议您从定义应用程序的主插件(bundle)中获取版本号,这样您就可以使用普通的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$
}
MyPlugin.getInstance().getMyProperties().getString("foo");
public String getVersion()
{
    Bundle bundle = Platform.getBundle("com.yourcompany.yourproject.pluginid");
    Dictionary headers = bundle.getHeaders();
    return (String)headers.get("Bundle-Version"); //$NON-NLS-1$
}