2012-02-26 19 views
18

Tengo problemas para encontrar mis archivos de registro.Registro de Java: ¿dónde está mi archivo de registro?

Estoy usando Java Logging - java.util.logging - en Eclipse 3.7.1 en Windows XP. Las líneas correspondientes de mi archivo logging.properties son:

handlers= java.util.logging.FileHandler, java.util.logging.ConsoleHandler 
.level=INFO 
java.util.logging.FileHandler.pattern = %h/java%u.log 
java.util.logging.FileHandler.limit = 50000 
java.util.logging.FileHandler.count = 1 
java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter 

Por lo que yo puedo entender, después de ejecutar estas dos líneas:

Logger logger = Logger.getLogger("test"); 
logger.logp(Level.INFO, "myClass", "myMethod", "Alcatraz"); 

mi archivo de registro debe estar en C:\Documents and Settings\[My Windows ID]\javaX.log donde X es un entero .

tengo 5 diferentes java.log archivos de ese directorio, a través de java0.logjava4.log, pero ninguno de ellos contienen mi entrada de registro o incluso un registro con la fecha del día en ella. Hice algunos google y encontré Tracing and Logging lo que implica que mis registros deben estar en una ubicación diferente, c:\Documents and Settings\[My Windows ID]\Application Data\Sun\Java\Deployment\log. Hay un archivo existe, llamado plugin5581819941091650582.log, pero es esencialmente vacío:

<?xml version="1.0" encoding="windows-1252" standalone="no"?> 
<!DOCTYPE log SYSTEM "logger.dtd"> 
<log> 
</log> 

su fecha de creación es la semana pasada. (No estoy seguro de qué proceso lo creó; ciertamente no lo creé explícitamente)

Entonces, ¿dónde está mi archivo de registro? No puedo pensar en ningún otro lugar para mirar.

Además, ¿alguien sabe cuándo entran en vigencia los cambios en logging.properties? Si cambié el nivel de registro o FileHandler.pattern, ¿qué tendría que suceder antes de que mi programa viera los cambios? Simplemente, guardar los cambios en logging.properties es claramente insuficiente. ¿Tendré que reiniciar Eclipse? ¿O reiniciar la computadora? Sólo curioso. Eso no es tan importante para mí como saber dónde está mi archivo de registro.

+0

Si desea más control sobre sus registros, puedo sugerir que tira en otra biblioteca llamada ¿Volver a iniciar sesión? O puede ver log4j. – wheaties

Respuesta

16

¿Dónde está su archivo logging.properties ubicado? Debería estar disponible en la raíz de la ruta de clase. Como un control de cordura, ¿qué imprime el siguiente código?

System.out.println(getClass().getClassLoader().getResource("logging.properties")); 

Si el código está en un contexto static, utilice

System.out.println(ClassName.class.getClassLoader().getResource("logging.properties")); 
+0

Estoy usando Eclipse 3.7.1 y tengo algunos JRE diferentes instalados, pero el que estoy usando en este proyecto de sandbox es un 1.6.0_18 JDK. El archivo logging.properties está en C: \ Program Files \ Java \ jdk1.6.0_18 \ jre \ lib. Lo siento, quería un salto de línea aquí, pero cuando presiono Enter, cierra la ventana. Cuando probé System.out.println() obtuve un nulo. Claramente, mi código no está viendo el archivo logging.properties y es por eso que el archivo de registro no va a donde quiero ir. Ahora necesito descubrir por qué no puede ver las propiedades de registro. Bueno, empezaré a buscar y si alguien tiene sugerencias, estoy escuchando ... –

+0

Le pregunté cómo agregar el archivo logging.properties al classpath en una nueva pregunta e hice lo que me dijeron. El println() ahora me está dando la ruta al registro, archivo de propiedades en lugar de nulo. Pero todavía no estoy viendo mi archivo de registro. Tengo los mismos cinco archivos javaX.log que antes y todos están sin cambios. ¿Alguna idea sobre cómo resolver esto? –

+2

está imprimiendo 'nulo' – justSaid

2

El archivo .log está en la carpeta \ workspace.metadata. Estoy usando Eclipse 4.2. Solo un novato tratando de ayudar a otros noobs.

0

Si es nulo, la ruta del archivo sería su directorio de inicio de eclipse. Su archivo logging.properties no es raken por el sistema, por lo que debe apuntar el archivo de propiedades a la ruta completa, como se muestra a continuación, su archivo de registro se generará en el lugar donde directamente lo prefiera. -Djava.util.logging.config.file = D: \ keplereclipse \ keplerws \ NFCInvoicingProject \ WebContent \ WEB-INF \ logging.properties

1

La causa raíz del problema de la pregunta está teniendo es que su archivo logging.properties no está siendo leído
El archivo especificado en java.util.logging.config.file no se lee desde classpath. En su lugar, se lee desde el sistema de archivos relativo al directorio actual.
Por ejemplo, ejecutar el siguiente comando java -Djava.util.logging.config.file=smclient-logging.properties SMMain leerá el smclient-logging.properties del directorio actual. Una vez que se lee el java.util.logging.config.file correcto, los registros se generan como se especifica en el archivo.

0

Parece que la ubicación predeterminada ha cambiado. Para encontrar su archivo de registro, abra la Consola Java con su aplicación. allí presiona "s". Esto muestra la System- y despliegue a Propiedades donde se puede encontrar algo como:

deployment.user.logdir = C:\Users\username\AppData\LocalLow\Sun\Java\Deployment\log 

Allí encontrará sus archivos de registro.

0

La ubicación del archivo de registro se puede controlar a través del archivo logging.properties. Y puede ser pasado como JVM parámetro por ejemplo: java -Djava.util.logging.config.file=/scratch/user/config/logging.properties

Detalles: https://docs.oracle.com/cd/E23549_01/doc.1111/e14568/handler.htm

Configuración del controlador de archivo

Para enviar los registros a un archivo, añadir FileHandler a la propiedad manipuladores en el registro. archivo de propiedades. Esto permitirá el registro de archivos globalmente.

handlers= java.util.logging.FileHandler 

Configurar el controlador mediante el establecimiento de las siguientes propiedades:

java.util.logging.FileHandler.pattern=<home directory>/logs/oaam.log 
java.util.logging.FileHandler.limit=50000 
java.util.logging.FileHandler.count=1 
java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter 

java.util.logging.FileHandler.pattern especifica la ubicación y el patrón del archivo de salida. La configuración predeterminada es su directorio de inicio.

java.util.logging.FileHandler.limit especifica, en bytes, la cantidad máxima que el registrador escribe en cualquier archivo.

java.util.logging.FileHandler.count especifica cuántos archivos de salida se deben pasar.

java.util.logging.FileHandler.formatter especifica la clase de formateador java.util.logging que la clase del manejador de archivos usa para formatear los mensajes de registro. SimpleFormatter escribe resúmenes breves de "lectura humana" de los registros.

Instruir Java para utilizar este archivo de configuración en lugar de $ JDK_HOME/jre/lib/logging.properties:

java -Djava.util.logging.config.file=/scratch/user/config/logging.properties 
Cuestiones relacionadas