SLING-8646 : Remove LogService implementation
diff --git a/src/main/java/org/apache/sling/commons/logservice/internal/Activator.java b/src/main/java/org/apache/sling/commons/logservice/internal/Activator.java
index 6d9bf64..878a381 100644
--- a/src/main/java/org/apache/sling/commons/logservice/internal/Activator.java
+++ b/src/main/java/org/apache/sling/commons/logservice/internal/Activator.java
@@ -16,9 +16,12 @@
*/
package org.apache.sling.commons.logservice.internal;
+import org.osgi.framework.Bundle;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
+import org.osgi.framework.Constants;
import org.osgi.framework.ServiceReference;
+import org.osgi.framework.startlevel.FrameworkStartLevel;
import org.osgi.service.log.LogReaderService;
import org.osgi.util.tracker.ServiceTracker;
import org.osgi.util.tracker.ServiceTrackerCustomizer;
@@ -37,7 +40,10 @@
*/
@Override
public void start(final BundleContext context) throws Exception {
- final SLF4JSupport listener = new SLF4JSupport();
+ // get framework start level
+ final Bundle systemBundle = context.getBundle(Constants.SYSTEM_BUNDLE_ID);
+
+ final SLF4JSupport listener = new SLF4JSupport(systemBundle.adapt(FrameworkStartLevel.class));
this.logReaderTracker = new ServiceTracker<>(context, LogReaderService.class,
new ServiceTrackerCustomizer<LogReaderService, LogReaderService>() {
diff --git a/src/main/java/org/apache/sling/commons/logservice/internal/SLF4JSupport.java b/src/main/java/org/apache/sling/commons/logservice/internal/SLF4JSupport.java
index 4a7b96c..85a6f47 100644
--- a/src/main/java/org/apache/sling/commons/logservice/internal/SLF4JSupport.java
+++ b/src/main/java/org/apache/sling/commons/logservice/internal/SLF4JSupport.java
@@ -25,6 +25,7 @@
import org.osgi.framework.Bundle;
import org.osgi.framework.Constants;
import org.osgi.framework.ServiceReference;
+import org.osgi.framework.startlevel.FrameworkStartLevel;
import org.osgi.service.component.ComponentConstants;
import org.osgi.service.log.LogEntry;
import org.osgi.service.log.LogListener;
@@ -36,6 +37,30 @@
*/
public class SLF4JSupport implements LogListener {
+ /**
+ * The service property name of the component name (value is "component.name").
+ * Note: We use a private constant here to not create a unneeded dependency on
+ * the org.osgi.service.component package.
+ */
+ private static final String COMPONENT_NAME = ComponentConstants.COMPONENT_NAME; // "component.name";
+
+ private static final String LOGGER_EVENT_FRAMEWORK = "Events.Framework";
+ private static final String LOGGER_EVENT_BUNDLE = "Events.Bundle";
+ private static final String LOGGER_EVENT_SERVICE = "Events.Service";
+ private static final String LOGGER_EVENT_LOG_SERVICE = "LogService";
+
+ private static final String SL_MARKER = "STARTLEVEL CHANGED";
+
+ /** Framework start level. */
+ private final FrameworkStartLevel startLevel;
+
+ private final List<String> logServiceLoggers = Arrays.asList(LOGGER_EVENT_FRAMEWORK, LOGGER_EVENT_BUNDLE,
+ LOGGER_EVENT_SERVICE, LOGGER_EVENT_LOG_SERVICE);
+
+ public SLF4JSupport(final FrameworkStartLevel startLevel) {
+ this.startLevel = startLevel;
+ }
+
@Override
public void logged(final LogEntry logEntry) {
doLog(logEntry);
@@ -43,23 +68,16 @@
private void doLog(final LogEntry logEntry) {
// get the logger for the bundle
- final boolean isLogService = "LogService".equals(logEntry.getLoggerName());
+ final boolean isLogService = logServiceLoggers.contains(logEntry.getLoggerName());
final Logger logger = LoggerFactory
.getLogger(isLogService ? getLoggerName(logEntry.getBundle()) : logEntry.getLoggerName());
if (!isEnabled(logger, logEntry)) {
- // early Exit, this message will not be logged, don't do any work...
+ // early exit, this message will not be logged, don't do any work...
return;
}
logOut(logger, logEntry);
}
- /**
- * The service property name of the component name (value is "component.name").
- * Note: We use a private constant here to not create a unneeded dependency on
- * the org.osgi.service.component package.
- */
- private static final String COMPONENT_NAME = ComponentConstants.COMPONENT_NAME; // "component.name";
-
private String getLoggerName(final Bundle bundle) {
String name;
if (bundle == null) {
@@ -112,6 +130,10 @@
if (logEntry.getMessage() != null) {
msg.append(logEntry.getMessage());
+ if (LOGGER_EVENT_FRAMEWORK.equals(logEntry.getLoggerName()) && logEntry.getMessage().contains(SL_MARKER)) {
+ msg.append(" to ");
+ msg.append(String.valueOf(this.startLevel.getStartLevel()));
+ }
}
Throwable exception = logEntry.getException();
@@ -136,8 +158,8 @@
case TRACE:
logger.trace(message, exception);
break;
- case AUDIT: // we treat audit as info for now as there is no audit in slf4j (TODO)
- logger.info(message, exception);
+ case AUDIT: // we treat audit as trace
+ logger.trace(message, exception);
break;
}
}
@@ -154,8 +176,8 @@
return logger.isErrorEnabled();
case TRACE:
return logger.isTraceEnabled();
- case AUDIT: // we treat audit as info for now as there is no audit in slf4j (TODO)
- return logger.isInfoEnabled();
+ case AUDIT: // we treat audit as trace
+ return logger.isTraceEnabled();
}
return false;
}