У меня есть приложение Eclipse E4, и я хочу добавить в него несколько пользовательских журналов (с Logback). Но когда я делаю это с помощью метода postContectCreate жизненного цикла приложения, он всегда дает мне диалоговое окно с исключением. Я не хочу, чтобы это диалоговое окно, но журналы должны быть записаны в файл журнала. Как мне этого добиться?
Я пытался:
@PostContextCreate
void postContextCreate(IEclipseContext workbenchContext) {
...
workbenchContext.set(IEventLoopAdvisor.class, new EclipseLogs());
}
public class EclipseLogs implements IEventLoopAdvisor {
private static final Logger logger = LoggerFactory.getLogger(EclipseLogs.class);
@Override
public void eventLoopException(Throwable e) {
logger.error(e.getMessage(), GlobalData.getInstance().getCurrentUserName(), e);
}
@Override
public void eventLoopIdle(Display display) {
display.sleep();
}
}
Мой файл logback.xml выглядит так:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="TIME_BASED_FILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- daily rollover -->
<fileNamePattern>logs/%d{yyyy-MM-dd}.log
</fileNamePattern>
<maxHistory>7</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} (%line\) -
%msg%n</pattern>
</encoder>
</appender>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%-4relative [%thread] %-5level %logger{35} - %msg %n
</pattern>
</encoder>
</appender>
<root level="ALL">
<appender-ref ref="STDOUT" />
<appender-ref ref="TIME_BASED_FILE" />
</root>
<root level="ERROR">
<appender-ref ref="org.eclipse.jetty.websocket.LEVEL" />
</root>
</configuration>
Я хочу, чтобы исключения возникали в моем консольном терминале при его запуске изнутри самого Eclipse, но при запуске в качестве автономного приложения оно должно записывать исключение в файл журнала.
Сам диалог выглядит так: