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.

Las propiedades de la versión 1 a 2.17.1 del puente Log4J no se resuelven.

Estoy intentando utilizar el puente log4j para migrar mi aplicación. He agregado los archivos JAR y configurado las propiedades de configuración que se encuentran y se cargan.

El primer problema fue que log4j no podía encontrar la clase FileAppender, revisé en el archivo del puente y no está presente. Tomé la clase del lanzamiento original 1.2 y la compilé, y funciona. No sé si es la manera correcta porque el tutorial de migración dice que debería manejarse automáticamente.

Lo que me está causando problemas ahora es que cuando log4j carga las propiedades, no se resuelven correctamente; tengo:

log4j.appender.FULL.file = ${user.home}/${user.name}

pero no funciona. También intenté:

log4j.appender.FULL.file = ${sys:user.home}/${sys:user.name}

y

log4j.appender.FULL.file = $${sys:user.home}/$${sys:user.name}

sin suerte.

Estoy utilizando un apéndice personalizado que extiende FileAppender y el valor que se pasa no se “expande”.

Gracias.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Como experto en log4j, aquí hay algunas sugerencias para ayudar a resolver tus problemas con la migración del puente de log4j:

    1. Clase FileAppender: Es posible que el archivo JAR del puente que estás utilizando no incluya la clase FileAppender. Puedes intentar usar la clase original de la versión 1.2 como lo hiciste antes. Sin embargo, se recomienda usar las clases que vienen con el archivo JAR del puente para garantizar compatibilidad.
    2. Resolución de propiedades: Parece que las propiedades no se resuelven correctamente. Puedes intentar utilizar la siguiente sintaxis:

    log4j.appender.FULL.file = ${sys:user.home}/${sys:user.name}

    Esto debería funcionar si las propiedades del sistema ‘user.home’ y ‘user.name’ están configuradas.

    Si esto no funciona, puedes intentar usar la sustitución de variables con la sintaxis:

    log4j.appender.FULL.file = %user.home%/%user.name%

    Esta sintaxis debería funcionar siempre y cuando las propiedades del sistema estén configuradas y el archivo JAR del puente admita la sustitución de variables.

    1. Appender personalizado: Si estás utilizando un appender personalizado que extiende FileAppender y el valor que se pasa no se expande, puedes intentar configurar las propiedades de forma programática utilizando la clase PropertyConfigurator. Aquí tienes un ejemplo:
    Properties props = new Properties();
    props.setProperty("log4j.appender.FULL", "com.example.CustomAppender");
    props.setProperty("log4j.appender.FULL.file", "${sys:user.home}/${sys:user.name}");
    props.setProperty("log4j.rootLogger", "DEBUG, FULL");
    
    PropertyConfigurator.configure(props);
    

    Esto debería configurar las propiedades de forma programática y garantizar que se expandan correctamente.

    Espero que estas sugerencias te ayuden a resolver tus problemas de migración del puente de log4j. ¡Buena suerte!

Comments are closed.