El adaptador JUL no funciona para Jersey

Estoy tratando de usarAdaptador JUL delegar Java Util Logging a Log4j2. Más precisamente, cualquier biblioteca de terceros que use JUL para generar registros, debe delegarse en Log4j2.

Como ejercicio simple, creé una aplicación independiente que usa una biblioteca (creé esta biblioteca con fines de prueba, genera registros usando JUL) para probar elAdaptador JUL. Cuando cambio el administrador de registros como se describeaquí Puedo ver los efectos. Y funciona bien.

El suyo es el código:

import org.apache.logging.log4j.LogManager;
import com.ah.loggen.LogGenerator;

public class TestLogging {

    static {
        System.setProperty("java.util.logging.manager", "org.apache.logging.log4j.jul.LogManager");
    }

    private static final org.apache.logging.log4j.Logger LOG4J = LogManager.getLogger();

    public static void main(String[] args) {
        System.out.println("Java Util Logging");
        LogGenerator.generateError("This is an error message.");
        LogGenerator.generateInfo("This is an info message.");
        LogGenerator.generateWarning("This is a warning message.");
        System.out.println("LOG4J");
        LOG4J.info("[LOG4J] This is an info message.");
        LOG4J.error("[LOG4J] This is an error message.");
        LOG4J.warn("[LOG4J] This is a warning message.");
    }
}

Dependencias requeridas:

dependencies {
    compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.10.0'
    compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.10.0'
    compile group: 'org.apache.logging.log4j', name: 'log4j-jul', version: '2.10.0'

    compile files('lib/loggen.jar')

    testCompile 'junit:junit:4.12'
}

Sin embargo, no puedo hacer que esto funcione en una aplicación web de Java que usa Jersey. Jersey usa JUL, y estoy tratando de conectarlo con Log4j2.

Aquí esta labuild.gradle archivo:

apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'eclipse-wtp'
apply from: 'https://raw.github.com/akhikhl/gretty/master/pluginScripts/gretty.plugin'

repositories {
    mavenCentral()
}

task wrapper(type: Wrapper) {
    gradleVersion = '4.4.1'
}

dependencies {
    compile "javax.ws.rs:javax.ws.rs-api:2.1"
    compile "org.glassfish.jersey.core:jersey-server:2.22.1"
    compile "org.glassfish.jersey.containers:jersey-container-servlet:2.22.1"
    compile "org.glassfish.jersey.media:jersey-media-json-jackson:2.22.1" 
    providedCompile "javax.servlet:javax.servlet-api:3.1.0" 

    compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.8'
    compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.8'
    compile group: 'org.apache.logging.log4j', name: 'log4j-web', version: '2.8'
    compile group: 'org.apache.logging.log4j', name: 'log4j-jul', version: '2.8'
}


gretty {
    servletContainer = 'tomcat8'
    httpPort = 8081
}

Probé estas opciones:

Cambiar el administrador de registros en una clase que se extiendaApplication.

package com.ahoxha.test;

import java.util.HashSet;
import java.util.Set;
import javax.annotation.PostConstruct;
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
import com.ahoxha.filters.JerseyLoggingFilter;

@ApplicationPath("")
public class HelloApplication extends Application {
    @Override
    public final Set<Class<?>> getClasses() {
        final Set<Class<?>> classes = new HashSet<>();
        classes.add(Hello.class);
        classes.add(MessageResource.class);
        classes.add(JerseyLoggingFilter.class);
        return classes;
    }

    @PostConstruct
    public void init() {
        String cn = "org.apache.logging.log4j.jul.LogManager";
        System.setProperty("java.util.logging.manager", cn);
    }
}

Cambiar el administrador de registros en una clase que implementeServletContextListener

package com.ahoxha.context;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;

@WebListener
public class ContextInitializer implements ServletContextListener {

    @Override
    public void contextInitialized(ServletContextEvent sce) {
        System.out.println("Initializing context.");
        System.setProperty("java.util.logging.manager", "org.apache.logging.log4j.jul.LogManager");
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        System.out.println("Context destroyed.");
    }
}

Además de las dos opciones anteriores, también intenté configurar el administrador de registros en unstatic block (para ambas opciones 1. y 2.)

Desafortunadamente, ninguna de estas opciones funcionó para mí. Me pregunto dónde debería hacerse esto. ¿Hay algo que me estoy perdiendo?

Respuestas a la pregunta(3)

Su respuesta a la pregunta