小编sro*_*sro的帖子

使用带有单独线程的java.util.logger写入文件?

我有2个FileHandler写出两个单独的文件,发生的I/O量正在减慢我的应用程序:

  1. 我决定让FileHandler在不同的线程上运行.

  2. 由于它们位于不同的线程上,我需要一个"队列"的概念,以便这些单独的线程可以轮询此队列并打印出任何传入的消息.

  3. 我已经预先格式化了消息,以便在实际到达FileHandler中的打印输出之前,所使用的任何参数都不会更改.

  4. 现在我意识到我不能使用记录器提供的"log"方法,因为它试图调用当前线程上的方法来格式化和打印出消息.

  5. 所以我只是调用一个方法将跟踪消息添加到队列中.

  6. 然后我使用FileHandlers的run()方法使用publish()打印出消息.

  7. 我现在意识到publish()只接受一个LogRecord,它只是一个级别+消息.

  8. 我的跟踪有更多,不能简单地放在一个整体消息中,我希望能够使用我设置为FileHandler的"Formatter".

  9. 所以我在FileHandler中创建了一个logger实例,所以我可以使用log方法并按照Formatter中的设计格式化字符串.

哪个有用,有点儿.

...

这有点傻,值得继续这样,在java.util.Logger上工作而不是使用它吗?java.util.Logger的一个有用部分是为每个类提供一个单独的记录器实例,并且能够对消息进行更多控制......

有什么建议?

代码很长,但我认为从上面的描述很容易理解,如果不让我知道,我会上传到某个地方.

java logging

2
推荐指数
1
解决办法
4790
查看次数

标签 统计

java ×1

logging ×1