我已经使用log4j为自定义日志API创建了一个eclipse RCP插件。我的日志API仅在控制台上打印日志。我想在Eclipse错误日志视图中打印它们。请建议如何在eclipse RCP插件中做到这一点。
我尝试了ILogListner和StatusManager,但没有成功。请给出一些关于此用例的建议或示例代码。
在这里,我编写了自定义附加器,并将此附加器添加到我的记录器中。
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%nLoggerService是一个OSGI服务,它是一个基于log4j的自定义记录器服务。
我有一个客户端代码,它使用这个LoggerService并使用日志方法。每当客户端调用任何LoggerService方法( (i.e loggerService.info("msg") )时,此消息都会记录到控制台中,但我希望登录到eclipse Error视图。
我已经推荐了eclipse plugin development: error logging in log4j to error view
注意:-客户端和服务都是OSGI包。
更新:-我有一个Logger Service OSGI bundle,它将lo4j实例返回给另一个Client OSGI bundle,然后客户端使用这个服务进行日志记录。
发布于 2017-04-04 15:48:21
不久前,我们创建了一个名为slf4j-plus的库,用于将日志集成到Eclipse RCP应用程序hale studio中。它提供了几个扩展slf4j的特性,其中还有一个可以记录到错误视图的附加器。您可以在documentation中找到更多信息。
因此,如果可以选择使用slf4j和logback进行日志记录,则可以使用库(如果没有,至少可以将其用作可以遵循的示例;错误日志的实际日志记录发生在ErrorLogObserver中)。有一个用于log4j (和Apache commons日志等)的日志适配器。要将log4j日志记录路由到slf4j,这是将其与当前日志记录集成的方法。
这是一个包含当前包版本的p2 repository / update site,以防您想要测试它(不包括slf4j和logback包)。
https://stackoverflow.com/questions/43184920
复制相似问题