use of org.eclipse.equinox.log.Logger in project rt.equinox.framework by eclipse.
the class ExtendedLogServiceImpl method getLogger.
@Override
public <L extends org.osgi.service.log.Logger> L getLogger(String name, Class<L> loggerType) {
if (name == null) {
// $NON-NLS-1$
name = "LogService";
}
LoggerImpl logger = null;
Map<String, LoggerImpl> loggers = null;
factory.contextsLock.readLock().lock();
try {
loggers = loggerCache.get(loggerType);
if (loggers == null) {
throw new IllegalArgumentException(loggerType.getName());
}
logger = loggers.get(name);
} finally {
factory.contextsLock.readLock().unlock();
}
if (logger == null) {
LoggerContext loggerContext = factory.loggerContextTargetMap.getEffectiveLoggerContext(bundle);
if (loggerType == FormatterLogger.class) {
logger = new FormatterLoggerImpl(this, name, loggerContext);
} else if (loggerType == org.osgi.service.log.Logger.class) {
logger = new LoggerImpl(this, name, loggerContext);
} else {
throw new IllegalArgumentException(loggerType.getName());
}
factory.contextsLock.writeLock().lock();
try {
LoggerImpl existing = loggers.get(name);
if (existing == null) {
loggers.put(name, logger);
} else {
logger = existing;
}
} finally {
factory.contextsLock.writeLock().unlock();
}
}
return loggerType.cast(logger);
}
use of org.eclipse.equinox.log.Logger in project rt.equinox.framework by eclipse.
the class LoggingTests method testLogService.
public void testLogService() throws BundleException {
// Tests listeners at all levels when logged with the LogService
// $NON-NLS-1$
Bundle testBundle = installer.installBundle("test.logging.a");
testBundle.start();
BundleContext bc = testBundle.getBundleContext();
LogServiceReference logRef = getLogService(bc);
IStatus a = new Status(IStatus.ERROR, testBundle.getSymbolicName(), getName());
List context = new ArrayList();
context.add(a);
TestILogListener iLogListener1 = new TestILogListener(new ArrayList(context));
TestILogListener iLogListener2 = new TestILogListener(new ArrayList(context));
TestLogListener logListener = new TestLogListener(new ArrayList(context));
ILog testLog = Platform.getLog(testBundle);
testLog.addLogListener(iLogListener1);
Platform.addLogListener(iLogListener2);
logRef.readerService.addLogListener(logListener, logListener);
try {
ExtendedLogService logService = logRef.logService;
Logger logger = logService.getLogger(testBundle, EQUINOX_LOGGER);
logger.log(a, LogService.LOG_ERROR, a.getMessage());
assertTrue("Missing context", iLogListener1.waitforContext());
assertTrue("Missing context", iLogListener2.waitforContext());
assertTrue("Missing context", logListener.waitforContext());
iLogListener1.addContext(new ArrayList(context));
iLogListener2.addContext(new ArrayList(context));
logListener.addContext(new ArrayList(context));
logger.log(new FrameworkLogEntry(a, testBundle.getSymbolicName(), a.getSeverity(), a.getCode(), a.getMessage(), 0, null, null), LogService.LOG_ERROR, a.getMessage());
assertTrue("Missing context", iLogListener1.waitforContext());
assertTrue("Missing context", iLogListener2.waitforContext());
assertTrue("Missing context", logListener.waitforContext());
iLogListener1.addContext(new ArrayList(context));
iLogListener2.addContext(new ArrayList(context));
logListener.addContext(new ArrayList(context));
logListener.entries.clear();
logger.log(LogService.LOG_ERROR, a.getMessage());
assertTrue("Missing context", iLogListener1.waitforContext());
assertTrue("Missing context", iLogListener2.waitforContext());
// there is no status here
assertFalse("Missing context", logListener.waitforContext());
// but we should have received one log entry
assertEquals("Wrong number of entries", 1, logListener.entries.size());
} finally {
testLog.removeLogListener(iLogListener1);
Platform.removeLogListener(iLogListener2);
logRef.readerService.removeLogListener(logListener);
logRef.unget(bc);
}
}
use of org.eclipse.equinox.log.Logger in project rt.equinox.framework by eclipse.
the class EquinoxLogFactory method createFrameworkLog.
FrameworkLog createFrameworkLog(Bundle bundle, EquinoxLogWriter eclipseWriter) {
final EquinoxLogWriter logWriter = eclipseWriter == null ? defaultWriter : eclipseWriter;
final Logger logger = bundle == null ? logManager.getSystemBundleLog().getLogger(eclipseWriter.getLoggerName()) : logManager.getSystemBundleLog().getLogger(bundle, logWriter.getLoggerName());
return new FrameworkLog() {
public void setWriter(Writer newWriter, boolean append) {
logWriter.setWriter(newWriter, append);
}
public void setFile(File newFile, boolean append) throws IOException {
logWriter.setFile(newFile, append);
}
public void setConsoleLog(boolean consoleLog) {
logWriter.setConsoleLog(consoleLog);
}
public void log(FrameworkLogEntry logEntry) {
logger.log(logEntry, convertLevel(logEntry), logEntry.getMessage(), logEntry.getThrowable());
}
public void log(FrameworkEvent frameworkEvent) {
Bundle b = frameworkEvent.getBundle();
Throwable t = frameworkEvent.getThrowable();
String entry = b.getSymbolicName() == null ? b.getLocation() : b.getSymbolicName();
int severity;
switch(frameworkEvent.getType()) {
case FrameworkEvent.INFO:
severity = FrameworkLogEntry.INFO;
break;
case FrameworkEvent.ERROR:
severity = FrameworkLogEntry.ERROR;
break;
case FrameworkEvent.WARNING:
severity = FrameworkLogEntry.WARNING;
break;
default:
severity = FrameworkLogEntry.OK;
}
// $NON-NLS-1$
FrameworkLogEntry logEntry = new FrameworkLogEntry(entry, severity, 0, "", 0, t, null);
log(logEntry);
}
public File getFile() {
return logWriter.getFile();
}
public void close() {
logWriter.close();
}
};
}
Aggregations