package com.quantcomponents.ui.log;
import java.util.logging.Handler;
import java.util.logging.Level;
import java.util.logging.LogRecord;
import org.eclipse.core.runtime.ILog;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.osgi.service.log.LogService;
public class EclipseLogAdapterHandler extends Handler {
private final ILog eclipseLogger;
public EclipseLogAdapterHandler(ILog eclipseLogger) {
this.eclipseLogger = eclipseLogger;
}
@Override
public void publish(LogRecord logRecord) {
int eclipseSeverity = mapLogRecordLevel(logRecord.getLevel());
String className = logRecord.getSourceClassName();
String message = logRecord.getMessage();
Throwable e = logRecord.getThrown();
IStatus status;
if (e != null) {
status = new Status(eclipseSeverity, className, message, e);
} else {
status = new Status(eclipseSeverity, className, message);
}
eclipseLogger.log(status);
}
@Override
public void flush() {
}
@Override
public void close() throws SecurityException {
}
private int mapLogRecordLevel(Level level) {
if (level.intValue() <= Level.INFO.intValue()) {
return IStatus.INFO;
} else if (level.intValue() <= Level.WARNING.intValue()) {
return IStatus.WARNING;
} else {
return LogService.LOG_ERROR;
}
}
}