2010-12-16 4 views
25

Tengo un archivo por lotes que llama a un programa java.Anexión de salida de un archivo por lotes Para registrar el archivo

La salida se redirige a un archivo de registro en el mismo directorio. Sin embargo, el archivo de registro se reemplaza cada vez que se ejecuta el archivo por lotes ...

Me gustaría mantener las salidas anteriores en el archivo de registro y siempre anexar la nueva salida al archivo de registro.

+1

¿Cómo redirige la salida TAMBIÉN a la consola y al archivo de registro? – djangofan

Respuesta

70

En lugar de utilizar ">" para redirigir la siguiente manera:

java Foo > log 

uso ">>" para anexar el resultado "stdout" normal a un archivo nuevo o existente:

java Foo >> log 

Sin embargo, si también desea capturar errores "stderr" (como por qué no se pudo iniciar el programa Java), también debe usar la etiqueta "2> & 1" que redirecciona "stderr" (el "2") a "stdout" "(el" 1 "). Por ejemplo:

java Foo >> log 2>&1 
+0

Gracias, ">>" funcionó ..... también puede decirme qué líneas debo agregar a mi archivo por lotes w que lo hará ejecutar después de cada 30 minutos ... ¡junto con la marca de tiempo! –

+0

@Monojeet: Probablemente no deba hacer eso en su archivo por lotes; en su lugar, use el Programador de tareas. –

+0

En realidad, esto se implementará en muchos servidores, por lo que no es posible configurar el planificador de tareas en cada servidor, ¡un script será útil! –

4

Esto no es una respuesta a su pregunta original: "? Añadir a la salida de un archivo por lotes para el archivo de registro"

Como referencia, es una respuesta a su pregunta de seguimiento: "¿Qué líneas debo agregar a mi archivo de proceso por lotes que lo harán ejecutar cada 30 minutos?"

(Pero me gustaría seguir el consejo de Jon Skeet: "Probablemente no debería hacer eso en su archivo por lotes - en su lugar, utilizar el programador de tareas")

Tiempo de espera:

Ejemplo (1 segundo):

TIMEOUT /T 1000 /NOBREAK

del sueño:

Ejemplo (1 segundo):

sleep -m 1000

métodos alternativos:

Aquí es una respuesta a su segunda pregunta de seguimiento: "Junto con la marca de tiempo?"

Create a date and time stamp in your batch files

Ejemplo:.

echo *** Date: %DATE:/=-% and Time:%TIME::=-% *** >> output.log

1

Uso log4j en su programa java entonces puedes salida a varios medios de comunicación, crear registros, etc. rodando e incluir marcas de tiempo, nombres de clases y Números de línea

Cuestiones relacionadas