0

我在多个应用程序中使用播放文件记录器,如下所示:

Class1.java
private static ALogger logger = Logger.of("myAppLogger");
public void someMethodOfClass1() {
logger.info("This is Class1");
}

Class2.java
private static ALogger logger = Logger.of("myAppLogger");
public void someMethodOfClass2() {
logger.info("This is Class2");
}

Class3.java
Class4.java

等等

现在,如果我在同一台机器上运行多个播放服务器实例(或一个服务器实例和一个new play.api.Application运行批处理脚本的实例),是否有效并建议将多个服务器实例与一个文件记录器一起使用?

4

2 回答 2

1

它为每个 Logger.of() 调用调用 slf4j LoggerFactory.getLogger(name) ,因此这样做应该是安全的。

于 2013-05-23T08:01:59.153 回答
1

Play 框架使用 Logback 日志框架。

我建议你看看 Logback 的File Appender的文档。根据文档,FileAppender支持默认设置为 false 的谨慎模式。

在谨慎模式下,FileAppender 将安全地写入指定文件,即使存在运行在不同 JVM 中的其他 FileAppender 实例,也可能运行在不同主机上。谨慎模式的默认值为 false。

但同一页面警告:

谨慎模式依赖于独占文件锁。实验表明,文件锁定大约是写入日志事件成本的三倍 (x3)。在写入位于本地硬盘上的文件的“平均”PC 上,当谨慎模式关闭时,写入单个日志事件大约需要 10 微秒。当谨慎模式开启时,输出一个日志事件大约需要 30 微秒。这意味着当谨慎模式关闭时记录吞吐量为每秒 100,000 个事件,而在谨慎模式下大约每秒记录 33,000 个事件。

从文档中不清楚如果您在谨慎模式关闭时尝试从多个 jvm 登录会发生什么。

于 2013-05-27T13:42:07.177 回答