es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Ejecute SLF4J sin copiar nada en el directorio lib de WebLogic.

Necesito hacer que SLF4J funcione dentro de la aplicación de WebLogic. Según Buttso [1] y Oracle [2], se necesita copiar los siguientes archivos en el directorio domain/lib:
– slf4j-api
– slf4j-jdk14-1.6.0.jar

Luego, definir el siguiente controlador en el archivo logging.property:

 handlers = weblogic.logging.ServerLoggingHandler

y ejecutar WebLogic con el siguiente parámetro adjunto.

-Djava.util.logging.config.file=C:\tmp\logging.properties

Entiendo por qué el archivo de propiedades debe definirse globalmente. Pero no entiendo por qué los archivos JAR deben ser copiados en el directorio domain/lib de WebLogic. Intenté dejarlos en mi archivo WAR, pero no funcionó.

¿Hay alguna manera de mantener las bibliotecas de registro bajo el control de la aplicación? ¿De dónde viene esta limitación? ¿Es posible utilizar la infraestructura de registro JDK14 de Weblogic directamente desde la aplicación de la siguiente manera:

java.util.logging.Logger LOGGER = java.util.logging.Logger.getLogger("my.logger.Name");
LOGGER.info("JDK14 Anonymous info");

Funciona como se esperaba. El controlador weblogic.logging.ServerLoggingHandler es capaz de interceptar con éxito el mensaje y enviarlo al archivo de registro de WSL. ¿Por qué el puente de SLF4J no puede hacer lo mismo?


[1] Usar SLF4J con el registro de WebLogic Server
http://buttso.blogspot.com/2011/06/using-slf4j-with-weblogic-server.html

[2] ¿Cómo redirigir SLF4J al sistema de registro de WebLogic?
https://support.oracle.com/epmos/faces/DocumentDisplay?id=1507456.1 (se necesita suscripción de Oracle)

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Integración de SLF4J con la aplicación WebLogic

    Para hacer que SLF4J funcione dentro de la aplicación WebLogic, es necesario seguir las indicaciones mencionadas en [1] y [2].

    Los pasos implican copiar los siguientes archivos JAR en el directorio domain/lib:
    – slf4j-api
    – slf4j-jdk14-1.6.0.jar

    Además, es necesario definir el siguiente manejador en el archivo logging.property:

    handlers = weblogic.logging.ServerLoggingHandler
    

    Y, WebLogic debe iniciarse con el parámetro adjunto:

    -Djava.util.logging.config.file=C:\tmp\logging.properties
    

    El archivo logging.properties debe estar definido de forma global para garantizar que la configuración de registro se cargue correctamente.

    Sin embargo, la limitación de copiar los archivos JAR en el directorio domain/lib plantea la pregunta: ¿por qué no se pueden mantener las bibliotecas de registro bajo el control de la aplicación y evitar el uso de la configuración global?

    Es posible utilizar la infraestructura de registro JDK14 de WebLogic directamente desde la aplicación, pero el puente SLF4J no puede interceptar el mensaje y enviarlo al archivo de registro de WSL con el mismo manejador.

    La razón de esta limitación se debe a la jerarquía del cargador de clases en WebLogic. Las bibliotecas definidas en el directorio domain/lib se cargan en el cargador de clases del dominio, lo que las hace disponibles para todas las aplicaciones. Por otro lado, las bibliotecas definidas en el archivo WAR de una aplicación solo están disponibles en el cargador de clases de la aplicación, lo que las aísla del cargador de clases del dominio.

    Por lo tanto, para hacer que SLF4J funcione de manera transparente con la aplicación WebLogic, es necesario seguir los pasos mencionados y copiar los archivos JAR necesarios en el directorio domain/lib.


    Referencias:
    – [1] Usar SLF4J con el registro de WebLogic Server
    http://buttso.blogspot.com/2011/06/using-slf4j-with-weblogic-server.html

Comments are closed.