【发布时间】:2019-10-09 18:12:10
【问题描述】:
我们可以在读取和写入它的多个线程之间共享同一个日志文件吗?
首先在 Deque 中转储消息,例如并发收集,然后定期将数据从 deque 转储到日志文件,这是一个好主意吗?
请分享任何示例/指针以获得最佳性能。
【问题讨论】:
标签: java multithreading spring-webflux java.util.concurrent
我们可以在读取和写入它的多个线程之间共享同一个日志文件吗?
首先在 Deque 中转储消息,例如并发收集,然后定期将数据从 deque 转储到日志文件,这是一个好主意吗?
请分享任何示例/指针以获得最佳性能。
【问题讨论】:
标签: java multithreading spring-webflux java.util.concurrent
假设您指的是在同一台机器或分布式环境中运行的应用程序/程序,而不是同一应用程序中的多个线程。
那么……
如果您使用 Log4J 作为您的日志记录框架,您可以通过SocketAppender 实现您的日志记录(请参阅Log4J appenders)。然后,您的各种应用程序可以连接到您编写的单独的“日志记录”服务,以将所有日志合并到一个文件中。
另一种选择是让您的所有应用程序在特定队列(类似于 RabbitMQ)上注册为生产者,其中日志行作为消息发布。然后你可以再次拥有一个单独的消费者,它消费消息并将它们写入你的日志。
【讨论】: