Best practices for Java logging from multiple threads?

前端 未结 12 1283
星月不相逢
星月不相逢 2020-12-03 02:39

I want to have a diagnostic log that is produced by several tasks managing data. These tasks may be in multiple threads. Each task needs to write an element (possibly with s

12条回答
  •  广开言路
    2020-12-03 03:39

    I had a similar problem and implementation demands for special logs only. My solution was:

    1. I took a blockinglinkedqueue with size of *2 of the app's traffic/min.

    2. All threads put the object in the queue and finishes the job.

    3. Separate Log-Writer thread taking head object from queue and writing it to log4j file using a separate appender. This appender was not used for systemlogs.

    This ensures that logs are written serially and always are in order.

    This will not affect performance of the application since log writing is a completely separate process and will not create a bottleneck.

    You can also use aysncappender of log4j.

提交回复
热议问题