我使用log4j为自定义Logging API创建了一个eclipse RCP插件。 我的日志记录API仅在控制台上打印日志。我想在Eclipse Error Log View中打印它们。 请在eclipse RCP插件中建议如何执行此操作。
我尝试了ILogListner和StatusManager,但无法成功。 请提供有关此用例的一些建议或示例代码。
这里我编写自定义appender并将此appender添加到我的Logger中。
public class VirtualConsole extends ConsoleAppender{
@Override
public void append(LoggingEvent event) {
int level = IStatus.INFO;
if (event.getLevel().equals(Level.ERROR))
level = IStatus.ERROR;
IStatus status = new Status(level, event.categoryName,event.getMessage().toString());
StatusManager.getManager().handle(status, StatusManager.LOG|StatusManager.SHOW);
//and the normal logging
super.append(event);
}
}
LoggerService.java
private static Logger LOGGER = Logger.getLogger(LoggerService.class.getName());
VirtualConsole v = new VirtualConsole();
LOGGER.addAppender(v);
我的log4j.properties文件
#Define root logger options
log4j.rootLogger=debug, console
#Define console appender
log4j.appender.console=org.apache.log4j.ConsoleAppender
logrj.appender.console.Target=System.out
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%-5p %c{1} - %m%n
LoggerService是一个OSGI服务,它是一个基于log4j的自定义记录器服务。
我有一个客户端代码,它使用这个LoggerService并使用log方法。
每当客户端调用任何LoggerService方法(i.e loggerService.info("msg")
时,此消息都会记录到控制台中,但我想登录eclipse错误视图。
我已经提到了eclipse plugin development: error logging in log4j to error view
注意: - 客户端和服务都是OSGI包。
更新: - 我有一个Logger Service OSGI包,它将lo4j实例返回给另一个Client OSGI包,然后客户端使用这个服务进行记录。
答案 0 :(得分:1)
我们之前创建了一个名为slf4j-plus的库,用于将日志记录集成到Eclipse RCP应用程序hale studio中。它提供了一些扩展slf4j的功能,其中还包括一个记录到错误视图的appender。您可以在documentation。
中找到更多信息因此,如果您可以选择使用slf4j和logback进行日志记录,则可以使用该库(如果没有,至少可以使用它作为您可以遵循的示例;实际记录到错误日志中的是ErrorLogObserver)。 log4j(以及Apache commons日志记录等)的日志记录适配器将log4j日志记录路由到slf4j,这是您可以将它与当前日志记录集成的方式。
这是一个p2 repository / update site,其中包含当前版本的软件包,以防您要测试它(不包括slf4j和logback软件包)。