Search in sources :

Example 1 with Logger

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);
}
Also used : Logger(org.eclipse.equinox.log.Logger) FormatterLogger(org.osgi.service.log.FormatterLogger) LoggerContext(org.osgi.service.log.admin.LoggerContext) EquinoxLoggerContext(org.eclipse.osgi.internal.log.ExtendedLogServiceFactory.EquinoxLoggerContext)

Example 2 with 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);
    }
}
Also used : FrameworkLogEntry(org.eclipse.osgi.framework.log.FrameworkLogEntry) Logger(org.eclipse.equinox.log.Logger)

Example 3 with Logger

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();
        }
    };
}
Also used : FrameworkLog(org.eclipse.osgi.framework.log.FrameworkLog) FrameworkLogEntry(org.eclipse.osgi.framework.log.FrameworkLogEntry) Logger(org.eclipse.equinox.log.Logger)

Aggregations

Logger (org.eclipse.equinox.log.Logger)3 FrameworkLogEntry (org.eclipse.osgi.framework.log.FrameworkLogEntry)2 FrameworkLog (org.eclipse.osgi.framework.log.FrameworkLog)1 EquinoxLoggerContext (org.eclipse.osgi.internal.log.ExtendedLogServiceFactory.EquinoxLoggerContext)1 FormatterLogger (org.osgi.service.log.FormatterLogger)1 LoggerContext (org.osgi.service.log.admin.LoggerContext)1