¿Dónde está la ubicación correcta para poner Log4j.properties en un proyecto de Eclipse?

¿En qué parte de mi proyecto de Eclipse debo agregar el archivo log4j.properties para que funcione según lo previsto?

puede agregarlo donde desee, cuando ejecute su proyecto, configure classpath y agregue la ubicación de los archivos log4j.properties haciendo clic en: Ejecutar-> Configuración de ejecución -> [pestaña classpath] -> haga clic en Ingresos de usuario – > Avanzado -> Seleccione Agregar carpeta -> seleccione la ubicación de su archivo log4j.properties

y luego -> OK -> ejecutar

y debería estar cargado

La forma más segura en que la OMI debe apuntar al archivo en su configuración de ejecución / depuración

 -Dlog4j.configuration=file:mylogging.properties 

! Tenga en cuenta: al utilizar las configuraciones de lanzamiento de eclipse, la especificación del file: protocolo es obligatorio.

De esta forma, el registrador no capturará ningún logging.properties que venga antes en el classpath ni el predeterminado en el JDK.

Además, considere utilizar realmente el archivo log4j.xml, que tiene una syntax de expresiones más rica y permitirá más cosas (log4j.xml para la precedencia sobre log4j.properties.

Agregue el archivo log4j.properties a la ruta de la clase de tiempo de ejecución del proyecto. Algunas personas agregan esto a la raíz del árbol fuente (para que se copie a la raíz de las clases comstackdas).

Editar: si su proyecto es un proyecto de maven, puede poner log4j.properties en la carpeta src / main / resources (y el src / test / resources para las pruebas de su unidad).

Si tiene varios entornos (por ejemplo, desarrollo y producción), desea un registro diferente para cada entorno y desea implementar el mismo archivo jar (o war, o ear) en cada entorno (como en una comstackción para todos los entornos), almacene el archivo log4j.properties fuera del archivo jar y colóquelo en la ruta de clase para cada entorno (configurable por entorno). Históricamente, incluiría algún directorio conocido en cada entorno en el classpath y desplegaría cosas específicas del entorno allí. Por ejemplo, ~ tomcat_user / localclasspath donde ~ tomcat_user es el directorio de inicio del usuario que ejecutará la instancia de tomcat a la cual se desplegará mi archivo war.

La mejor manera es crear una carpeta de origen especial llamada resources y usarla para todos los recursos, incluido log4j.properties. Entonces, solo ponlo ahí.

En la carpeta Recursos de Java que fue creada automáticamente por el Proyecto web dynamic, haga clic con el botón derecho y agregue una nueva carpeta de origen y asígnele el nombre ‘recursos’. Los archivos aquí se exportarán al archivo war al directorio de clases

Si tiene una biblioteca y quiere agregar log4j:

  1. Crea una carpeta llamada “recursos” en tu proyecto.
  2. Crea un archivo .properties llamado log4j
  3. Establecer propiedades en el archivo log4j.properties
  4. Presione el botón derecho en el proyecto y vaya a Propiedades-> Ruta de comstackción Java y, finalmente, vaya a la pestaña “Fuente”.
  5. Presione Agregar carpeta y busque la carpeta “recursos” creada en el paso 1.
  6. Terminar.

(He supuesto que tiene la biblioteca log4j agregada).

PD: Lo siento por mi inglés.

Esta pregunta ya está respondida aquí

El classpath nunca incluye archivos específicos. Incluye directorios y archivos jar. Por lo tanto, ponga ese archivo en un directorio que se encuentre en su classpath .

Log4j propiedades de Log4j no se usan (normalmente) en el desarrollo de aplicaciones (¡a menos que esté depurando Eclipse por sí mismo!). Entonces, ¿qué es lo que realmente desea construir la aplicación Java ejecutable (aplicación, WAR, EAR o lo que sea) e incluir las propiedades de Log4j en el classpath de tiempo de ejecución?

Ponga log4j.properties en el classpath de tiempo de ejecución.

Este foro muestra algunos mensajes sobre posibles formas de hacerlo.

En general, lo puse en una carpeta especial “res” o “recursos como ya he dicho, pero luego para la aplicación web, copio log4j.properties con la tarea ant en el directorio WEB-INF / classes. Es lo mismo que dejando el archivo en la raíz de la carpeta src / pero, en general, prefiero verlo en una carpeta dedicada.

Con Maven, el lugar habitual para poner está en la carpeta src/main/resources como se respondió en esta otra publicación . Todos los recursos irán a su comstackción en la ruta de target/classes/ raíz (por ejemplo, target/classes/ )

Si desea un registrador potente, también puede echarle un vistazo a la biblioteca slf4j que es una fachada de registrador y puede usar la implementación de log4j.

Estoy descubriendo que la ubicación del archivo log4j.properties depende del tipo de proyecto de Eclipse.

Específicamente, para un proyecto web dynamic de Eclipse, la mayoría de las respuestas que implican agregar log4j.properties al archivo de guerra en realidad no agregan el archivo de propiedades en la ubicación correcta, especialmente para Tomcat / Apache.

Aquí hay algunas de mis investigaciones y mi solución al problema (una vez más específicamente para un proyecto web dynamic que se ejecuta en Tomcat / Apache 6.0)

  • Consulte este artículo sobre cómo Tomcat cargará las clases. Es diferente del cargador de clases normal para Java. ( https://www.mulesoft.com/tcat/tomcat-classpath ) Tenga en cuenta que solo se ve en dos lugares en el archivo war, WEB-INF / classes y WEB-INF / lib.

  • Tenga en cuenta que con un Dynamic Web Project, no es aconsejable almacenar su archivo .properties en el directorio build /../ classes, ya que este directorio se borrará cada vez que limpie y construya su proyecto.

  • Tomcat no maneja archivos .property en la ubicación WEB-INF / lib.

  • No puede almacenar el archivo log4j.properties en el directorio src, ya que Eclipse abstrae ese directorio de su vista.

  • La única forma que he encontrado para resolver esto es modificar la comstackción y agregar un directorio adicional que eventualmente se cargará en el directorio WEB-INF / classes en el archivo war. Específicamente….

(1) Haga clic con el botón derecho en su proyecto en el explorador de proyectos, seleccione ‘Nuevo’ -> ‘Carpeta’. Puede asignarle un nombre a la carpeta, pero el estándar en este caso es ‘recursos’. La nueva carpeta debe aparecer en el nivel raíz de su proyecto.

(2) Mueva el archivo log4j.properties a esta nueva carpeta.

(3) Haga clic derecho en el proyecto nuevamente y seleccione ‘Build-Path’ -> ‘Configure Build Path’. Seleccione la pestaña ‘Fuentes’. Haga clic en el botón ‘Agregar carpeta’. Busque la nueva carpeta que creó en el paso (1) anterior. Seleccione ‘OK’.

(4) Una vez de regreso a la vista de eclipse del Explorador de proyectos, observe que la carpeta ahora se ha movido al área de ‘Recursos de Java’ (es decir, ya no está en la raíz debido a la abstracción de presentación de eclipse).

(5) Limpie construya su proyecto.

(6) Para validar que el archivo .properties ahora existe en WEB-INF / classes en su archivo war, exporte un archivo war a una ubicación fácil (haga clic con el botón secundario en Proyecto -> Exportar -> Archivo war) y seleccione los contenidos. Tenga en cuenta que el archivo log4j.properties ahora aparece en WEB-INF / classes.

(7) Promocione su proyecto a Tomcat / Apache y tenga en cuenta que log4j ahora funciona.

Ahora que log4j funciona, comience a registrar, resuelva problemas mundiales, tómese un tiempo libre y disfrute de una sabrosa bebida para adultos.

No quiere que log4j.properties se empaquete con su proyecto desplegable; esa es una mala idea, como han mencionado otros carteles.

Encuentre la instalación raíz de Tomcat a la que apunta Eclipse cuando ejecuta su aplicación, y agregue el archivo log4j.properties en el lugar adecuado allí. Para Tomcat 7, el lugar correcto es

$ {TOMCAT_HOME} / lib