通常在应用程序中(以 web 应用程序为例)我们有一个在启动期间创建的记录器实例。它甚至可以是单例,这无关紧要。重要的是整个应用程序只有 1 个实例。我们使用 java.util.logger
现在想象一下,您有来自两个不同用户的两个请求,它们抛出异常,我们正在记录那些被写入日志文件的请求。这两个不同的请求对日志文件的写入是否以某种方式同步?或者我们是否需要显式同步它们,因为我发现在极少数情况下我们得到的日志在 tomcat 日志文件中的两个请求之间全部混在一起?
我并不完全关心这里的因果关系,只是两条日志消息的分离。
最佳答案
您不需要任何同步,引用 JavaDoc of Logger
:
All methods on Logger are multi-thread safe.
请注意,来自不同线程的单独调用仍然可以交错。这只是意味着您不会看到一条消息被另一条消息打断和分割。
关于Java Util Logger 写入同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14211629/