You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by ro...@apache.org on 2021/11/29 03:51:15 UTC

[felix-dev] 05/05: FELIX-6478 add support for passing OSGi Log 1.4 sequence numbers to future logback (1.3) / slf4j (2.0)

This is an automated email from the ASF dual-hosted git repository.

rotty3000 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/felix-dev.git

commit 03255314a55f3454bf48b477b6ee46f2f2f8365b
Author: Raymond Augé <ra...@liferay.com>
AuthorDate: Sun Nov 28 22:40:31 2021 -0500

    FELIX-6478 add support for passing OSGi Log 1.4 sequence numbers to future logback (1.3) / slf4j (2.0)
    
    Signed-off-by: Raymond Augé <ra...@liferay.com>
---
 logback/itests/immediate-jbl/itest.bndrun          | 12 ++++--
 logback/itests/immediate-jcl/itest.bndrun          | 20 ++++++----
 logback/itests/immediate-jul/itest.bndrun          |  6 +--
 logback/itests/immediate-log4j1/itest.bndrun       | 18 +++++----
 logback/itests/immediate-log4j2/itest.bndrun       | 18 +++++----
 logback/itests/immediate-slf4j/itest.bndrun        | 16 +++++---
 logback/itests/itest-parent/pom.xml                | 24 +++++++++++-
 .../standard-equinox-logservice/itest.bndrun       | 12 +++---
 logback/itests/standard-jbl/itest.bndrun           | 17 ++++++---
 logback/itests/standard-jcl/itest.bndrun           | 14 +++----
 logback/itests/standard-log4j1/itest.bndrun        | 12 +++---
 logback/itests/standard-slf4j/itest.bndrun         | 10 ++---
 logback/logback/pom.xml                            | 18 ++++++++-
 .../apache/felix/logback/internal/Activator.java   | 43 +++++++++++++++++-----
 .../felix/logback/internal/LogbackLogListener.java | 25 +++++++++++++
 15 files changed, 187 insertions(+), 78 deletions(-)

diff --git a/logback/itests/immediate-jbl/itest.bndrun b/logback/itests/immediate-jbl/itest.bndrun
index ccda978..5176812 100644
--- a/logback/itests/immediate-jbl/itest.bndrun
+++ b/logback/itests/immediate-jbl/itest.bndrun
@@ -3,22 +3,26 @@
 -runfw: org.apache.felix.framework
 
 -runrequires:\
+    osgi.identity;filter:='(osgi.identity=org.apache.felix.log.extension)',\
     osgi.identity;filter:='(osgi.identity=org.apache.felix.logback.itests.immediate.jbl)'
 
 -runpath: \
     ch.qos.logback.classic;version=latest,\
     ch.qos.logback.core;version=latest,\
-    slf4j.api;version=latest
+    slf4j.api;version=latest,\
+    org.apache.felix.log;version=latest,\
+    org.apache.felix.logback;version=latest
 
 -runsystempackages: \
-    org.slf4j;version=${slf4j.api.version},\
-    org.slf4j.helpers;version=${slf4j.api.version},\
-    org.slf4j.spi;version=${slf4j.api.version}
+    org.slf4j;version=${version_cleanup;${slf4j.api.version}},\
+    org.slf4j.helpers;version=${version_cleanup;${slf4j.api.version}},\
+    org.slf4j.spi;version=${version_cleanup;${slf4j.api.version}}
 
 -runproperties.this: \
     org.jboss.logging.provider=slf4j
 
 -runbundles: \
+    org.apache.felix.log.extension;version='[1.0.0,1.0.1)',\
     org.apache.felix.logback.itests.immediate.jbl;version='[1.0.0,1.0.1)',\
     org.apache.servicemix.bundles.junit;version='[4.13.2,4.13.3)',\
     org.jboss.logging.jboss-logging;version='[3.4.2,3.4.3)'
\ No newline at end of file
diff --git a/logback/itests/immediate-jcl/itest.bndrun b/logback/itests/immediate-jcl/itest.bndrun
index a9a6e8c..3e7aae2 100644
--- a/logback/itests/immediate-jcl/itest.bndrun
+++ b/logback/itests/immediate-jcl/itest.bndrun
@@ -4,20 +4,24 @@
 
 -runrequires:\
     osgi.identity;filter:='(osgi.identity=log4j.over.slf4j)',\
+    osgi.identity;filter:='(osgi.identity=org.apache.felix.log.extension)',\
     osgi.identity;filter:='(osgi.identity=org.apache.felix.logback.itests.immediate.jcl)'
 
 -runpath: \
     ch.qos.logback.classic;version=latest,\
     ch.qos.logback.core;version=latest,\
-    slf4j.api;version=latest
+    slf4j.api;version=latest,\
+    org.apache.felix.log;version=latest,\
+    org.apache.felix.logback;version=latest
 
 -runsystempackages: \
-    org.slf4j;version=${slf4j.api.version},\
-    org.slf4j.helpers;version=${slf4j.api.version},\
-    org.slf4j.spi;version=${slf4j.api.version}
+    org.slf4j;version=${version_cleanup;${slf4j.api.version}},\
+    org.slf4j.helpers;version=${version_cleanup;${slf4j.api.version}},\
+    org.slf4j.spi;version=${version_cleanup;${slf4j.api.version}}
 
 -runbundles: \
-    log4j.over.slf4j;version='[1.7.32,1.7.33)',\
-    org.apache.commons.logging;version='[1.2.0,1.2.1)',\
-    org.apache.felix.logback.itests.immediate.jcl;version='[1.0.0,1.0.1)',\
-    org.apache.servicemix.bundles.junit;version='[4.13.2,4.13.3)'
\ No newline at end of file
+	log4j.over.slf4j;version='[1.7.32,1.7.33)',\
+	org.apache.commons.logging;version='[1.2.0,1.2.1)',\
+	org.apache.felix.log.extension;version='[1.0.0,1.0.1)',\
+	org.apache.felix.logback.itests.immediate.jcl;version='[1.0.0,1.0.1)',\
+	org.apache.servicemix.bundles.junit;version='[4.13.2,4.13.3)'
\ No newline at end of file
diff --git a/logback/itests/immediate-jul/itest.bndrun b/logback/itests/immediate-jul/itest.bndrun
index 6568bb6..d56c960 100644
--- a/logback/itests/immediate-jul/itest.bndrun
+++ b/logback/itests/immediate-jul/itest.bndrun
@@ -12,9 +12,9 @@
     org.apache.felix.logback;version=latest
 
 -runsystempackages: \
-    org.slf4j;version=${slf4j.api.version},\
-    org.slf4j.helpers;version=${slf4j.api.version},\
-    org.slf4j.spi;version=${slf4j.api.version}
+    org.slf4j;version=${version_cleanup;${slf4j.api.version}},\
+    org.slf4j.helpers;version=${version_cleanup;${slf4j.api.version}},\
+    org.slf4j.spi;version=${version_cleanup;${slf4j.api.version}}
 
 -runbundles: \
     org.apache.felix.logback.itests.immediate.jul;version='[1.0.0,1.0.1)',\
diff --git a/logback/itests/immediate-log4j1/itest.bndrun b/logback/itests/immediate-log4j1/itest.bndrun
index 7b60182..90429c8 100644
--- a/logback/itests/immediate-log4j1/itest.bndrun
+++ b/logback/itests/immediate-log4j1/itest.bndrun
@@ -3,19 +3,23 @@
 -runfw: org.apache.felix.framework
 
 -runrequires:\
+    osgi.identity;filter:='(osgi.identity=org.apache.felix.log.extension)',\
     osgi.identity;filter:='(osgi.identity=org.apache.felix.logback.itests.immediate.log4j1)'
 
 -runpath: \
     ch.qos.logback.classic;version=latest,\
     ch.qos.logback.core;version=latest,\
-    slf4j.api;version=latest
+    slf4j.api;version=latest,\
+    org.apache.felix.log;version=latest,\
+    org.apache.felix.logback;version=latest
 
 -runsystempackages: \
-    org.slf4j;version=${slf4j.api.version},\
-    org.slf4j.helpers;version=${slf4j.api.version},\
-    org.slf4j.spi;version=${slf4j.api.version}
+    org.slf4j;version=${version_cleanup;${slf4j.api.version}},\
+    org.slf4j.helpers;version=${version_cleanup;${slf4j.api.version}},\
+    org.slf4j.spi;version=${version_cleanup;${slf4j.api.version}}
 
 -runbundles: \
-    log4j.over.slf4j;version='[1.7.32,1.7.33)',\
-    org.apache.felix.logback.itests.immediate.log4j1;version='[1.0.0,1.0.1)',\
-    org.apache.servicemix.bundles.junit;version='[4.13.2,4.13.3)'
\ No newline at end of file
+	log4j.over.slf4j;version='[1.7.32,1.7.33)',\
+	org.apache.felix.log.extension;version='[1.0.0,1.0.1)',\
+	org.apache.felix.logback.itests.immediate.log4j1;version='[1.0.0,1.0.1)',\
+	org.apache.servicemix.bundles.junit;version='[4.13.2,4.13.3)'
\ No newline at end of file
diff --git a/logback/itests/immediate-log4j2/itest.bndrun b/logback/itests/immediate-log4j2/itest.bndrun
index a626507..8ed22d9 100644
--- a/logback/itests/immediate-log4j2/itest.bndrun
+++ b/logback/itests/immediate-log4j2/itest.bndrun
@@ -3,6 +3,7 @@
 -runfw: org.apache.felix.framework
 
 -runrequires:\
+    osgi.identity;filter:='(osgi.identity=org.apache.felix.log.extension)',\
     osgi.identity;filter:='(osgi.identity=org.apache.felix.logback.itests.immediate.log4j2)'
 
 -runpath: \
@@ -10,14 +11,17 @@
     ch.qos.logback.core;version=latest,\
     org.apache.logging.log4j.api;version=latest,\
     org.apache.logging.log4j.to-slf4j;version=latest,\
-    slf4j.api;version=latest
+    slf4j.api;version=latest,\
+    org.apache.felix.log;version=latest,\
+    org.apache.felix.logback;version=latest
 
 -runsystempackages: \
-    org.apache.logging.log4j;version=${apache.logging.log4j.version},\
-    org.slf4j;version=${slf4j.api.version},\
-    org.slf4j.helpers;version=${slf4j.api.version},\
-    org.slf4j.spi;version=${slf4j.api.version}
+    org.apache.logging.log4j;version=${version_cleanup;${apache.logging.log4j.version}},\
+    org.slf4j;version=${version_cleanup;${slf4j.api.version}},\
+    org.slf4j.helpers;version=${version_cleanup;${slf4j.api.version}},\
+    org.slf4j.spi;version=${version_cleanup;${slf4j.api.version}}
 
 -runbundles: \
-    org.apache.felix.logback.itests.immediate.log4j2;version='[1.0.0,1.0.1)',\
-    org.apache.servicemix.bundles.junit;version='[4.13.2,4.13.3)'
\ No newline at end of file
+	org.apache.felix.log.extension;version='[1.0.0,1.0.1)',\
+	org.apache.felix.logback.itests.immediate.log4j2;version='[1.0.0,1.0.1)',\
+	org.apache.servicemix.bundles.junit;version='[4.13.2,4.13.3)'
\ No newline at end of file
diff --git a/logback/itests/immediate-slf4j/itest.bndrun b/logback/itests/immediate-slf4j/itest.bndrun
index b5a8f7e..39995e2 100644
--- a/logback/itests/immediate-slf4j/itest.bndrun
+++ b/logback/itests/immediate-slf4j/itest.bndrun
@@ -3,18 +3,22 @@
 -runfw: org.apache.felix.framework
 
 -runrequires:\
+    osgi.identity;filter:='(osgi.identity=org.apache.felix.log.extension)',\
     osgi.identity;filter:='(osgi.identity=org.apache.felix.logback.itests.immediate.slf4j)'
 
 -runpath: \
     ch.qos.logback.classic;version=latest,\
     ch.qos.logback.core;version=latest,\
-    slf4j.api;version=latest
+    slf4j.api;version=latest,\
+    org.apache.felix.log;version=latest,\
+    org.apache.felix.logback;version=latest
 
 -runsystempackages: \
-    org.slf4j;version=${slf4j.api.version},\
-    org.slf4j.helpers;version=${slf4j.api.version},\
-    org.slf4j.spi;version=${slf4j.api.version}
+    org.slf4j;version=${version_cleanup;${slf4j.api.version}},\
+    org.slf4j.helpers;version=${version_cleanup;${slf4j.api.version}},\
+    org.slf4j.spi;version=${version_cleanup;${slf4j.api.version}}
 
 -runbundles: \
-    org.apache.felix.logback.itests.immediate.slf4j;version='[1.0.0,1.0.1)',\
-    org.apache.servicemix.bundles.junit;version='[4.13.2,4.13.3)'
\ No newline at end of file
+	org.apache.felix.log.extension;version='[1.0.0,1.0.1)',\
+	org.apache.felix.logback.itests.immediate.slf4j;version='[1.0.0,1.0.1)',\
+	org.apache.servicemix.bundles.junit;version='[4.13.2,4.13.3)'
\ No newline at end of file
diff --git a/logback/itests/itest-parent/pom.xml b/logback/itests/itest-parent/pom.xml
index cd40dc0..15391bd 100644
--- a/logback/itests/itest-parent/pom.xml
+++ b/logback/itests/itest-parent/pom.xml
@@ -46,7 +46,11 @@
 
         <apache.logging.log4j.version>2.14.1</apache.logging.log4j.version>
         <felix.log.version>1.2.5-SNAPSHOT</felix.log.version>
+
         <slf4j.api.version>1.7.32</slf4j.api.version>
+        <!-- <slf4j.api.version>2.0.0-alpha4</slf4j.api.version> -->
+        <logback.version>1.2.7</logback.version>
+        <!-- <logback.version>1.3.0-alpha10</logback.version> -->
 
         <animal.sniffer.skip>true</animal.sniffer.skip>
         <maven.deploy.skip>true</maven.deploy.skip>
@@ -64,7 +68,7 @@
         <dependency>
             <groupId>ch.qos.logback</groupId>
             <artifactId>logback-classic</artifactId>
-            <version>1.2.7</version>
+            <version>${logback.version}</version>
         </dependency>
         <dependency>
             <groupId>org.osgi</groupId>
@@ -99,6 +103,12 @@
             <version>1.0.2</version>
         </dependency>
         <dependency>
+            <groupId>org.apache.aries.spifly</groupId>
+            <artifactId>org.apache.aries.spifly.dynamic.framework.extension</artifactId>
+            <version>1.3.4</version>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
             <groupId>org.apache.felix</groupId>
             <artifactId>org.apache.felix.configadmin</artifactId>
             <version>1.9.22</version>
@@ -112,6 +122,18 @@
         </dependency>
         <dependency>
             <groupId>org.apache.felix</groupId>
+            <artifactId>org.apache.felix.log</artifactId>
+            <version>${felix.log.version}</version>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.felix</groupId>
+            <artifactId>org.apache.felix.log.extension</artifactId>
+            <version>1.0.0</version>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.felix</groupId>
             <artifactId>org.apache.felix.logback</artifactId>
             <version>1.0.3-SNAPSHOT</version>
             <scope>runtime</scope>
diff --git a/logback/itests/standard-equinox-logservice/itest.bndrun b/logback/itests/standard-equinox-logservice/itest.bndrun
index c90ab1f..ed2cd4c 100644
--- a/logback/itests/standard-equinox-logservice/itest.bndrun
+++ b/logback/itests/standard-equinox-logservice/itest.bndrun
@@ -11,9 +11,9 @@
     eclipse.log.enabled=false
 
 -runbundles: \
-    ch.qos.logback.classic;version='[1.2.7,1.2.8)',\
-    ch.qos.logback.core;version='[1.2.7,1.2.8)',\
-    org.apache.felix.logback;version='[1.0.3,1.0.4)',\
-    org.apache.felix.logback.itests.standard.equinox.logservice;version='[1.0.0,1.0.1)',\
-    org.apache.servicemix.bundles.junit;version='[4.13.2,4.13.3)',\
-    slf4j.api;version='[1.7.32,1.7.33)'
\ No newline at end of file
+	ch.qos.logback.classic;version='[1.2.7,1.2.8)',\
+	ch.qos.logback.core;version='[1.2.7,1.2.8)',\
+	org.apache.felix.logback;version='[1.0.3,1.0.4)',\
+	org.apache.felix.logback.itests.standard.equinox.logservice;version='[1.0.0,1.0.1)',\
+	org.apache.servicemix.bundles.junit;version='[4.13.2,4.13.3)',\
+	slf4j.api;version='[1.7.32,1.7.33)'
\ No newline at end of file
diff --git a/logback/itests/standard-jbl/itest.bndrun b/logback/itests/standard-jbl/itest.bndrun
index 58ae862..d682dee 100644
--- a/logback/itests/standard-jbl/itest.bndrun
+++ b/logback/itests/standard-jbl/itest.bndrun
@@ -4,15 +4,20 @@
 
 -runrequires:\
     osgi.identity;filter:='(osgi.identity=ch.qos.logback.classic)',\
+    osgi.identity;filter:='(osgi.identity=org.apache.felix.log)',\
+    osgi.identity;filter:='(osgi.identity=org.apache.felix.logback)',\
     osgi.identity;filter:='(osgi.identity=org.apache.felix.logback.itests.standard.jbl)'
 
 -runproperties: \
     org.jboss.logging.provider=slf4j
 
 -runbundles: \
-    ch.qos.logback.classic;version='[1.2.7,1.2.8)',\
-    ch.qos.logback.core;version='[1.2.7,1.2.8)',\
-    org.apache.felix.logback.itests.standard.jbl;version='[1.0.0,1.0.1)',\
-    org.apache.servicemix.bundles.junit;version='[4.13.2,4.13.3)',\
-    org.jboss.logging.jboss-logging;version='[3.4.2,3.4.3)',\
-    slf4j.api;version='[1.7.32,1.7.33)'
\ No newline at end of file
+	ch.qos.logback.classic;version='[1.2.7,1.2.8)',\
+	ch.qos.logback.core;version='[1.2.7,1.2.8)',\
+	org.apache.felix.configadmin;version='[1.9.22,1.9.23)',\
+	org.apache.felix.log;version='[1.2.5,1.2.6)',\
+	org.apache.felix.logback;version='[1.0.3,1.0.4)',\
+	org.apache.felix.logback.itests.standard.jbl;version='[1.0.0,1.0.1)',\
+	org.apache.servicemix.bundles.junit;version='[4.13.2,4.13.3)',\
+	org.jboss.logging.jboss-logging;version='[3.4.2,3.4.3)',\
+	slf4j.api;version='[1.7.32,1.7.33)'
\ No newline at end of file
diff --git a/logback/itests/standard-jcl/itest.bndrun b/logback/itests/standard-jcl/itest.bndrun
index 5be9330..eade6f5 100644
--- a/logback/itests/standard-jcl/itest.bndrun
+++ b/logback/itests/standard-jcl/itest.bndrun
@@ -8,10 +8,10 @@
     osgi.identity;filter:='(osgi.identity=org.apache.felix.logback.itests.standard.jcl)'
 
 -runbundles: \
-    ch.qos.logback.classic;version='[1.2.7,1.2.8)',\
-    ch.qos.logback.core;version='[1.2.7,1.2.8)',\
-    log4j.over.slf4j;version='[1.7.32,1.7.33)',\
-    org.apache.commons.logging;version='[1.2.0,1.2.1)',\
-    org.apache.felix.logback.itests.standard.jcl;version='[1.0.0,1.0.1)',\
-    org.apache.servicemix.bundles.junit;version='[4.13.2,4.13.3)',\
-    slf4j.api;version='[1.7.32,1.7.33)'
\ No newline at end of file
+	ch.qos.logback.classic;version='[1.2.7,1.2.8)',\
+	ch.qos.logback.core;version='[1.2.7,1.2.8)',\
+	log4j.over.slf4j;version='[1.7.32,1.7.33)',\
+	org.apache.commons.logging;version='[1.2.0,1.2.1)',\
+	org.apache.felix.logback.itests.standard.jcl;version='[1.0.0,1.0.1)',\
+	org.apache.servicemix.bundles.junit;version='[4.13.2,4.13.3)',\
+	slf4j.api;version='[1.7.32,1.7.33)'
\ No newline at end of file
diff --git a/logback/itests/standard-log4j1/itest.bndrun b/logback/itests/standard-log4j1/itest.bndrun
index 8a5897c..c946d03 100644
--- a/logback/itests/standard-log4j1/itest.bndrun
+++ b/logback/itests/standard-log4j1/itest.bndrun
@@ -7,9 +7,9 @@
     osgi.identity;filter:='(osgi.identity=org.apache.felix.logback.itests.standard.log4j1)'
 
 -runbundles: \
-    ch.qos.logback.classic;version='[1.2.7,1.2.8)',\
-    ch.qos.logback.core;version='[1.2.7,1.2.8)',\
-    log4j.over.slf4j;version='[1.7.32,1.7.33)',\
-    org.apache.felix.logback.itests.standard.log4j1;version='[1.0.0,1.0.1)',\
-    org.apache.servicemix.bundles.junit;version='[4.13.2,4.13.3)',\
-    slf4j.api;version='[1.7.32,1.7.33)'
\ No newline at end of file
+	ch.qos.logback.classic;version='[1.2.7,1.2.8)',\
+	ch.qos.logback.core;version='[1.2.7,1.2.8)',\
+	log4j.over.slf4j;version='[1.7.32,1.7.33)',\
+	org.apache.felix.logback.itests.standard.log4j1;version='[1.0.0,1.0.1)',\
+	org.apache.servicemix.bundles.junit;version='[4.13.2,4.13.3)',\
+	slf4j.api;version='[1.7.32,1.7.33)'
\ No newline at end of file
diff --git a/logback/itests/standard-slf4j/itest.bndrun b/logback/itests/standard-slf4j/itest.bndrun
index 42f4c2c..c47dc3d 100644
--- a/logback/itests/standard-slf4j/itest.bndrun
+++ b/logback/itests/standard-slf4j/itest.bndrun
@@ -7,8 +7,8 @@
     osgi.identity;filter:='(osgi.identity=org.apache.felix.logback.itests.standard.slf4j)'
 
 -runbundles: \
-    ch.qos.logback.classic;version='[1.2.7,1.2.8)',\
-    ch.qos.logback.core;version='[1.2.7,1.2.8)',\
-    org.apache.felix.logback.itests.standard.slf4j;version='[1.0.0,1.0.1)',\
-    org.apache.servicemix.bundles.junit;version='[4.13.2,4.13.3)',\
-    slf4j.api;version='[1.7.32,1.7.33)'
\ No newline at end of file
+	ch.qos.logback.classic;version='[1.2.7,1.2.8)',\
+	ch.qos.logback.core;version='[1.2.7,1.2.8)',\
+	org.apache.felix.logback.itests.standard.slf4j;version='[1.0.0,1.0.1)',\
+	org.apache.servicemix.bundles.junit;version='[4.13.2,4.13.3)',\
+	slf4j.api;version='[1.7.32,1.7.33)'
\ No newline at end of file
diff --git a/logback/logback/pom.xml b/logback/logback/pom.xml
index 33e66a9..11a2be4 100644
--- a/logback/logback/pom.xml
+++ b/logback/logback/pom.xml
@@ -46,6 +46,11 @@
         <maven.compiler.source>1.8</maven.compiler.source>
         <maven.compiler.target>1.8</maven.compiler.target>
         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+
+        <slf4j.api.version>1.7.32</slf4j.api.version>
+        <!-- <slf4j.api.version>2.0.0-alpha4</slf4j.api.version> -->
+        <logback.version>1.2.7</logback.version>
+        <!-- <logback.version>1.3.0-alpha10</logback.version> -->
     </properties>
 
     <dependencies>
@@ -56,9 +61,14 @@
             <scope>provided</scope>
         </dependency>
         <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+            <version>${slf4j.api.version}</version>
+        </dependency>
+        <dependency>
             <groupId>ch.qos.logback</groupId>
             <artifactId>logback-classic</artifactId>
-            <version>1.2.7</version>
+            <version>${logback.version}</version>
         </dependency>
         <dependency>
             <groupId>org.eclipse.platform</groupId>
@@ -93,7 +103,11 @@
                 <version>${bnd.version}</version>
                 <configuration>
                     <bnd><![CDATA[
-                        Import-Package: !org.eclipse.osgi.internal.hookregistry, *
+                        Import-Package: \
+                            !org.eclipse.osgi.internal.hookregistry,\
+                            ch.qos.logback.classic.*;version="[1.2,2)",\
+                            org.slf4j.*;version="[1.7,3)",\
+                            *
                         -conditionalpackage: org.slf4j.bridge
                     ]]></bnd>
                 </configuration>
diff --git a/logback/logback/src/main/java/org/apache/felix/logback/internal/Activator.java b/logback/logback/src/main/java/org/apache/felix/logback/internal/Activator.java
index f539f29..d697ed3 100644
--- a/logback/logback/src/main/java/org/apache/felix/logback/internal/Activator.java
+++ b/logback/logback/src/main/java/org/apache/felix/logback/internal/Activator.java
@@ -15,6 +15,7 @@
 package org.apache.felix.logback.internal;
 
 import java.util.AbstractMap.SimpleEntry;
+import java.util.function.Supplier;
 
 import org.osgi.annotation.bundle.Header;
 import org.osgi.framework.BundleActivator;
@@ -45,20 +46,25 @@ public class Activator implements BundleActivator {
             public LRST addingService(
                 ServiceReference<LoggerAdmin> reference) {
 
-                LoggerAdmin loggerAdmin = bundleContext.getService(reference);
+                return tccl(() -> {
+                    LoggerAdmin loggerAdmin = bundleContext.getService(reference);
 
-                LRST lrst = new LRST(bundleContext, loggerAdmin);
+                    LRST lrst = new LRST(bundleContext, loggerAdmin);
 
-                lrst.open();
+                    lrst.open();
 
-                return lrst;
+                    return lrst;
+                });
             }
 
             @Override
             public void removedService(
                 ServiceReference<LoggerAdmin> reference, LRST lrst) {
 
-                lrst.close();
+                tccl(() -> {
+                    lrst.close();
+                    return null;
+                });
             }
         };
 
@@ -70,6 +76,18 @@ public class Activator implements BundleActivator {
         lat.close();
     }
 
+    private static <R> R tccl(Supplier<R> action) {
+        Thread currentThread = Thread.currentThread();
+        ClassLoader original = currentThread.getContextClassLoader();
+        try {
+            currentThread.setContextClassLoader(Activator.class.getClassLoader());
+            return action.get();
+        }
+        finally {
+            currentThread.setContextClassLoader(original);
+        }
+    }
+
     class LRST extends ServiceTracker<LogReaderService, Pair> {
 
         public LRST(BundleContext context, LoggerAdmin loggerAdmin) {
@@ -82,13 +100,15 @@ public class Activator implements BundleActivator {
         public Pair addingService(
             ServiceReference<LogReaderService> reference) {
 
-            LogReaderService logReaderService = context.getService(reference);
+            return tccl(() -> {
+                LogReaderService logReaderService = context.getService(reference);
 
-            LogbackLogListener logbackLogListener = new LogbackLogListener(loggerAdmin);
+                LogbackLogListener logbackLogListener = new LogbackLogListener(loggerAdmin);
 
-            logReaderService.addLogListener(logbackLogListener);
+                logReaderService.addLogListener(logbackLogListener);
 
-            return new Pair(logReaderService, logbackLogListener);
+                return new Pair(logReaderService, logbackLogListener);
+            });
         }
 
         @Override
@@ -96,7 +116,10 @@ public class Activator implements BundleActivator {
             ServiceReference<LogReaderService> reference,
             Pair pair) {
 
-            pair.getKey().removeLogListener(pair.getValue());
+            tccl(() -> {
+                pair.getKey().removeLogListener(pair.getValue());
+                return null;
+            });
         }
 
         private final LoggerAdmin loggerAdmin;
diff --git a/logback/logback/src/main/java/org/apache/felix/logback/internal/LogbackLogListener.java b/logback/logback/src/main/java/org/apache/felix/logback/internal/LogbackLogListener.java
index 179f81e..6e55de1 100644
--- a/logback/logback/src/main/java/org/apache/felix/logback/internal/LogbackLogListener.java
+++ b/logback/logback/src/main/java/org/apache/felix/logback/internal/LogbackLogListener.java
@@ -14,8 +14,12 @@
 
 package org.apache.felix.logback.internal;
 
+import java.lang.invoke.MethodHandle;
+import java.lang.invoke.MethodHandles;
+import java.lang.invoke.MethodType;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Optional;
 import java.util.concurrent.atomic.AtomicBoolean;
 
 import org.osgi.framework.Bundle;
@@ -42,6 +46,19 @@ public class LogbackLogListener implements LogListener, LoggerContextListener {
     private static final String EVENTS_SERVICE = "Events.Service";
     private static final String LOG_SERVICE = "LogService";
 
+    private static final MethodHandles.Lookup publicLookup = MethodHandles.publicLookup();
+    private static Optional<MethodHandle> setSequenceNumber = Optional.empty();
+
+    static {
+        MethodType mt = MethodType.methodType(void.class, long.class);
+        try {
+            MethodHandle methodHandle = publicLookup.findVirtual(LoggingEvent.class, "setSquenceNumber", mt);
+
+            setSequenceNumber = Optional.of(methodHandle);
+        } catch (NoSuchMethodException | IllegalAccessException e) {
+        }
+    }
+
     volatile LoggerContext loggerContext;
     volatile Logger rootLogger;
     volatile LoggerContextVO loggerContextVO;
@@ -132,6 +149,14 @@ public class LogbackLogListener implements LogListener, LoggerContextListener {
         le.setThrowableProxy(getThrowableProxy(entry.getException()));
         le.setTimeStamp(entry.getTime());
 
+        setSequenceNumber.ifPresent(mh -> {
+            try {
+                mh.bindTo(le).invokeExact(entry.getSequence());
+            } catch (Throwable e) {
+                e.printStackTrace();
+            }
+        });
+
         rootLogger.callAppenders(le);
     }