You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by pk...@apache.org on 2023/01/20 10:18:43 UTC

[logging-log4j2] branch master updated: Register context selector through injector

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

pkarwasz pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git


The following commit(s) were added to refs/heads/master by this push:
     new 1cca712868 Register context selector through injector
1cca712868 is described below

commit 1cca712868f58984cefaff74827030348d6bb2f0
Author: Piotr P. Karwasz <pi...@karwasz.org>
AuthorDate: Fri Jan 20 11:17:27 2023 +0100

    Register context selector through injector
    
    Setting a system property to change the default selector is error prone.
---
 .../main/java/org/apache/logging/log4j/core/osgi/Activator.java  | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/osgi/Activator.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/osgi/Activator.java
index ef0ebaa17d..1c1e4c9104 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/osgi/Activator.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/osgi/Activator.java
@@ -22,6 +22,7 @@ import java.util.concurrent.atomic.AtomicReference;
 
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.core.impl.Log4jProperties;
+import org.apache.logging.log4j.core.selector.ContextSelector;
 import org.apache.logging.log4j.core.util.ContextDataProvider;
 import org.apache.logging.log4j.plugins.di.Injector;
 import org.apache.logging.log4j.plugins.di.InjectorCallback;
@@ -55,6 +56,10 @@ public final class Activator implements BundleActivator {
             public void configure(final Injector injector) {
                 injector.registerBinding(Key.forClass(PluginRegistry.class),
                         () -> context.getService(pluginRegistryServiceRegistration.getReference()));
+                // allow the user to override the default ContextSelector (e.g., by using BasicContextSelector for a global cfg)
+                if (PropertiesUtil.getProperties().getStringProperty(Log4jProperties.CONTEXT_SELECTOR_CLASS_NAME) == null) {
+                    injector.registerBinding(ContextSelector.KEY, () -> new BundleContextSelector(injector));
+                }
             }
 
             @Override
@@ -71,10 +76,6 @@ public final class Activator implements BundleActivator {
         registry.loadServicesFromBundle(PluginService.class, bundleId, classLoader);
         registry.loadServicesFromBundle(ContextDataProvider.class, bundleId, classLoader);
         registry.loadServicesFromBundle(InjectorCallback.class, bundleId, classLoader);
-        // allow the user to override the default ContextSelector (e.g., by using BasicContextSelector for a global cfg)
-        if (PropertiesUtil.getProperties().getStringProperty(Log4jProperties.CONTEXT_SELECTOR_CLASS_NAME) == null) {
-            System.setProperty(Log4jProperties.CONTEXT_SELECTOR_CLASS_NAME, BundleContextSelector.class.getName());
-        }
         contextRef.compareAndSet(null, context);
     }