Problemas con FileHandler concurrente
La descripción de mi problema es la siguiente:
Tengo desarrollados algunos plugins de Oracle Access Manager, cada plugin utiliza una instancia del Logger de OAM (Ya viene en la API), cada plugin deberá escribir su información hacia un archivo por lo cual utilice la clase FileHandler y se la agregue al Logger, pero tenia el problema de que creaba muchos archivos (más de los que le ponia en el parametro de archivos a rotar que era de 5) porque generaba archivos .lck mientras atendia otro plugin debido a que la concurrencia de llamadas a los plugins era muy alta, esto lo solucione utilizando un singleton de la clase FileHandler pero debido a que el metodo estático para obtener el Singleton esta sincronizado generá algunas excepciones de timeouts supongo porque va encolando las peticiones hacia el FileHandler, como podría solucionarlo ?
Dejo la emulación del plugin y una prueba standalone de como se comportaría mi código:
De antemano muchas gracias por su opinion y ayuda.
Saludos.
- Inicie sesión o regístrese para enviar comentarios
antipatrón
Esto es un buen ejemplo de un antipatrón. Cuándo NO se debe usar un singleton.
Ok pero como hago que cada
Ok pero como hago que cada plugin pueda loggear a un archivo diferente sin que se crucen, y por supuesto sin singleton ? ....
...
Ya lo he intentado con el logger de Java pero al tener llamadas concurrentes genera muchos archivos .lck y genera más archivos de los que le indico que debe de rotar precisamente porque mientras atiende una petición puede dejar a medias otra (por aquello de la concurrencia) con un archivo .lck y genera uno nuevo.
¿Programáticamente?
¿Y por qué hacerlo programáticamente? ¿Has intentado el procedimiento que se describe en ?
Notas
~~~
Eso se lo dije a mi jefe y no hizo caso
Jajaja curiosamente eso ya lo había leido pero mi jefe insistio en hacerlo programáticamente le mostrare este link a ver si ahora si hace caso, muchas gracias @jpaul.