¿Las mejores prácticas para el registro de Java desde múltiples hilos?

Quiero tener un registro de diagnóstico producido por varias tareas que administran datos. Estas tareas pueden estar en múltiples hilos. Cada tarea necesita escribir un elemento (posiblemente con subelementos) en el registro; entrar y salir rápidamente. Si esta fuera una situación de una sola tarea, usaría XMLStreamWriter ya que parece la mejor combinación para la simplicidad / funcionalidad sin tener que guardar un documento XML en memoria.

Pero no es una situación de tarea única, y no estoy seguro de cómo asegurarme de que sea "threadsafe", donde "threadsafe" en esta aplicación significa que cada elemento de registro debe escribirse en el registro correctamente y en serie (uno después del otro y no intercalados de ninguna manera).

¿Alguna sugerencia? Tengo una vaga intuición de que el camino a seguir es usar una cola de elementos de registro (cada uno de los cuales puede producirse rápidamente: mi aplicación está ocupada haciendo un trabajo real que es sensible al rendimiento) y tengo un hilo separado que maneja el registro elementos y los envía a un archivo para que el registro no interrumpa a los productores.

l registro no necesariamente tiene que ser XML, pero sí quiero que sea estructurado y legible por máquina.

edit: pongo "threadsafe" entre comillas. Log4j parece ser la opción obvia (nueva para mí pero antigua para la comunidad), ¿por qué reinventar la rueda ...

Respuestas a la pregunta(12)

Su respuesta a la pregunta