如何在RCP插件中将log4j日志写入eclipse错误日志视图
我已经使用log4j为定制日志API创建了一个eclipse RCP插件。 我的日志API仅打印控制台上的日志。我想在Eclipse错误日志视图中打印它们。 请建议如何在EclipseRCP插件中执行此操作 我尝试了iGlistner和StatusManager,但没有成功。 请给出一些关于这个用例的建议或示例代码 在这里,我编写自定义appender并将此appender添加到我的记录器中如何在RCP插件中将log4j日志写入eclipse错误日志视图,eclipse,eclipse-plugin,osgi,eclipse-rcp,osgi-bundle,Eclipse,Eclipse Plugin,Osgi,Eclipse Rcp,Osgi Bundle,我已经使用log4j为定制日志API创建了一个eclipse RCP插件。 我的日志API仅打印控制台上的日志。我想在Eclipse错误日志视图中打印它们。 请建议如何在EclipseRCP插件中执行此操作 我尝试了iGlistner和StatusManager,但没有成功。 请给出一些关于这个用例的建议或示例代码 在这里,我编写自定义appender并将此appender添加到我的记录器中 public class VirtualConsole extends ConsoleAppender{
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方法(即LoggerService.info(“msg”)
)时,此消息都会被记录到控制台中,但我希望登录到eclipse错误视图中
我已经提到
注意:-客户端和服务都是OSGI包
更新:-
我有一个日志服务OSGI bundle,它将lo4j实例返回给另一个客户端OSGI bundle,然后客户端使用此服务进行日志记录。我们在不久前创建了一个名为的库,用于将日志记录集成到Eclipse RCP应用程序中。它提供了几个扩展slf4j的特性,其中还有一个记录到错误视图的appender。您可以在中找到更多信息 因此,如果您可以选择使用slf4j和logback进行日志记录,那么您可以使用该库(如果不是,至少您可以将其作为一个可以遵循的示例;错误日志的实际日志记录发生在中)。log4j(和apachecommons日志等)有一个日志适配器,用于将log4j日志路由到slf4j,这就是您可以将它与当前日志集成的方式
下面是一个关于当前版本的捆绑包的示例,以防您要测试它(但不包括slf4j和logback捆绑包)。您是否调试了在调用服务方法时是否实际调用了appender?是的,它正在调用,并且日志和状态显示在控制台中,但不显示在Eclipse错误日志中。在ErrorLogObserver中(如回答中所述)我使用Activator的日志(扩展AbstractUIPlugin),这可能会对使用StatusManager有所不同。但未成功。请推荐使用log4j和appenders的小用例,或者以某种方式将消息记录在eclipse错误日志中。我在一个服务中创建记录器实例,并使用osgi服务在另一个捆绑包中使用记录器api。