Envolviendo la API slf4j

Quiero adaptar slf4j con Logback en una aplicación heredada. Lo bueno es que la aplicación heredada tiene su propio marco de registro. Entonces, todo lo que tuve que hacer es alterar el marco de registro para iniciar sesión en slf4j en lugar de log4j.

Funcionó como un sueño. Estaba feliz, hasta que noté la ubicación de Logback registrada para cada evento de registro:

Logger.java:...

¡Ay! Eso no iba a ayudar mucho a mis colegas desarrolladores cuando intentaba averiguar de dónde provenía un evento de registro.

¿Cómo puedo decirle a Logback que busque algunos niveles en la pila para la ubicación real para registrar?

La clase logger es una clase de utilidad con métodos como este:

public static void debug(String clazz, String message) {
    org.slf4j.Logger logger = LoggerFactory.getLogger(clazz);
    logger.debug(message);
}
Respuesta 1

Encontré la solución mirando la fuente de jcl-over-slf4j. La mayoría de las implementaciones de slf4j (incluido el inicio de sesión) utilizan registradores que implementan LocationAwareLogger, que tiene un método de registro que espera el nombre de clase completamente calificado de la clase de registrador de ajuste como uno de sus argumentos:

private static final String FQCN = Logger.class.getName();


public static void debug(String clazz, String message) {
    org.slf4j.Logger logger = LoggerFactory.getLogger(clazz);
    if (logger instanceof LocationAwareLogger) {
        ((LocationAwareLogger) logger).log(null, FQCN, LocationAwareLogger.DEBUG_INT, message, null, null);
    } else {
        logger.debug(message);
    }
}
Respuesta: 2

Estoy tratando de cambiar el color de la fuente que uso en mi aplicación. Pero lo que sea que pruebe, la fuente sigue siendo negra. Hice esta fuente usando la herramienta de fuente Hiero. Mi código es algo como esto: SpriteBatch ...

Revisé esta página y obtuve un código útil para usar un proxy en código Java cuando me conecté a una página web. Puedo confirmar que páginas como Whatsmyip realmente me dicen que el proxy está funcionando, es ...

Estoy tratando de hacer mi clase de validación para mi programa. Ya establecí la conexión a la base de datos MySQL y ya inserté filas en la tabla. La tabla consta de firstName, lastName ...

Tengo un código similar a este (reemplacé mis variables de negocio por otras genéricas): Map <String, String> map = new HashMap <String, String> (); para (int i = 1; i <10; i ++) {...