Escribí un proyecto de servicio web usando netbeans 6.7.1 con glassfish v2.1, puse log4j.properties en el directorio raíz del proyecto y uso:
static Logger logger = Logger.getLogger(MyClass.class);
en Constructor:
PropertyConfigurator.configure("log4j.properties");
y en funciones:
logger.info("...");
logger.error("...");
// ...
pero, es información de error (en realidad, he tratado de ponerlo en casi todos los directorios que pude darme cuenta):
log4j:ERROR Could not read configuration file [log4j.properties].
java.io.FileNotFoundException: log4j.properties (The system cannot find the file specified)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:106)
at java.io.FileInputStream.<init>(FileInputStream.java:66)
at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:297)
at org.apache.log4j.PropertyConfigurator.configure(PropertyConfigurator.java:315)
at com.corp.ors.demo.OrsDemo.main(OrisDemo.java:228)
log4j:ERROR Ignoring configuration file [log4j.properties].
log4j:WARN No appenders could be found for logger (com.corp.ors.demo.OrsDemo).
log4j:WARN Please initialize the log4j system properly.
el proyecto de ejemplo se puede obtener de http://www.91files.com/?N3F0QGQPWMDGPBRN0QA8
Respuestas:
Sé que es un poco tarde para responder esta pregunta, y tal vez ya encontraste la solución, pero estoy publicando la solución que encontré (después de buscar en Google mucho), por lo que puede ayudar un poco:
-Dlog4j.debug
@ al final de sus opciones java de tomcatEspero que esto ayude.
rgds
fuente
Como ya se dijo, log4j.properties debe estar en un directorio incluido en el classpath, quiero agregar que en un proyecto mavenizado puede ser un buen lugar
src/main/resources/log4j.properties
fuente
Puede especificar la ubicación del archivo de configuración con el argumento VM -Dlog4j.configuration = "archivo: / C: /workspace3/local/log4j.properties"
fuente
log4j.configurationFile
Debe ponerlo en el directorio raíz, que corresponde a su contexto de ejecución.
Ejemplo:
Si comienza a ejecutar desde un proyecto diferente, debe tener ese archivo en el proyecto utilizado para comenzar la ejecución. Por ejemplo, si un proyecto diferente contiene algunas pruebas JUnit, también debe tener su archivo log4j.properties.
Sugiero usar log4j.xml en lugar de log4j.properties. Tiene más opciones, obtenga asistencia de su IDE, etc.
fuente
Para un proyecto basado en Maven, mantenga sus log4j.properties en src / main / resources. ¡Nada más que hacer!
fuente
Si coloca log4j.properties dentro de src, no necesita usar la declaración:
Se tomará automáticamente ya que el archivo de propiedades está en el classpath.
fuente
Tratar:
fuente
El archivo debe ubicarse en el directorio WEB-INF / classes. Esta estructura de directorio debe estar empaquetada dentro del archivo war.
fuente
Mi IDE es NetBeans. Puse el archivo log4j.property como se muestra en las imágenes
Raíz
Web
WEB-INF
Para usar este archivo de propiedades, debe escribir este código:
Puede definir el contexto estático de ServletContext desde otro archivo JSP. Ejemplo:
Ahora puede usar el archivo log4j.property en sus proyectos.
fuente
Ya se han proporcionado algunas respuestas específicas técnicamente correctas, pero en general, puede estar en cualquier lugar del classpath en tiempo de ejecución, es decir, donde sea que JVM busque las clases.
Este podría ser el directorio / src en Eclipse o el directorio WEB-INF / classes en su aplicación implementada, pero es mejor tener en cuenta el concepto de classpath y por qué se coloca el archivo en él, no solo trate WEB-INF / clases como un directorio "mágico".
fuente
He dedicado mucho tiempo a descubrir por qué no se ve el archivo log4j.properties .
Entonces noté que era visible para el proyecto solo cuando estaba en las carpetas MyProject / target / classes / y MyProject / src / main / resources .
Espero que sea útil para alguien.
PD: El proyecto se basó en Maven.
fuente
Descubrí que Glassfish por defecto está mirando [Glassfish install location] \ glassfish \ domains [su dominio] \ como el directorio de trabajo predeterminado ... puede soltar el archivo log4j.properties en esta ubicación e inicializarlo en su código usando PropertyConfigurator como se menciono antes...
fuente
No sé si esta es la forma correcta, pero resolvió mi problema. coloque el archivo log4j.properties en la "carpeta de proyecto" / config y use PropertyConfigurator.configure ("config // log4j.properties");
funcionará con IDE pero no cuando ejecute el archivo jar usted mismo. cuando ejecute el archivo jar usted mismo, simplemente copie el archivo log4j.properties en la carpeta en la que se encuentra el archivo jar. Cuando el archivo jar y la propiedad en el mismo directorio se ejecute bien.
fuente
Ponga log4j.properties en classpath. Estos son los 2 casos que lo ayudarán a identificar la ubicación adecuada: 1. Para la aplicación web, el classpath es / WEB-INF / classes.
Para probar desde la prueba principal / unidad, el classpath es el directorio fuente
fuente
Hay muchas formas de hacerlo:
Way1: si está intentando en un proyecto maven sin usar PropertyConfigurator
Primero: verifique el directorio de recursos en scr / main
sigue la captura de pantalla:
Way2: si está intentando con el archivo de propiedades para el proyecto java / maven Use PropertyConfigurator
Coloque el archivo de propiedades en cualquier parte del proyecto y proporcione la ruta correcta. diga: src / javaLog4jProperties / log4j.properties
estático{
}
Way3: Si está intentando con xml en un proyecto java / maven, use DOMConfigurator
Coloque el archivo de propiedades en cualquier parte del proyecto y proporcione la ruta correcta. diga: src / javaLog4jProperties / log4j.xml
estático{
}
fuente
La configuración estándar del proyecto tendrá una estructura de proyecto similar a:
Coloca log4j.properties dentro de la carpeta de recursos, puede crear la carpeta de recursos si no existe
fuente
En realidad, acabo de experimentar este problema en una estructura de proyecto Java Stardard de la siguiente manera:
En Eclipse, necesito agregar la carpeta res para crear la ruta, sin embargo, en Intellij, necesito marcar la carpeta res como recursos como muestra la captura de pantalla vinculada: haga clic derecho en la carpeta res y márquela como recursos .
fuente
No necesita especificar
PropertyConfigurator.configure("log4j.properties");
en su clase Log4J, si ya ha definido log4j.properties en la estructura de su proyecto.En caso de proyecto dinámico web: -
Debe guardar sus log4j.properties en WebContent -> WEB-INF -> log4j.properties
Espero que esto te pueda ayudar.
fuente