本手册尚未完善,正在不断完善中。
如果您想帮助改进它,我们希望您能这样做,请参阅 README

25 日志记录

Ratpack 使用 SLF4J 进行日志记录,允许您在编译时轻松绑定您最喜欢的日志记录库。

库选项包括

只需添加一个日志记录库作为依赖项,并使用 SLF4J 语法进行日志记录。如果您当前正在使用其他日志记录库,SLF4J 提供了一个 迁移工具 来自动化迁移。
Java 和 Groovy 的示例如下,更多详细信息可以在 SLF4J 手册 中找到。

1.25 Java

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class LogExample {
  private final static Logger LOGGER = LoggerFactory.getLogger(LogExample.class);
    
  public void log() {
    LOGGER.info("Start logging");
    LOGGER.warn("Logging with a {} or {}", "parameter", "two");
    LOGGER.error("Log an exception", new Exception("Example exception"));
    LOGGER.info("Stop logging");
  }
}

2.25 Groovy

import groovy.util.logging.Slf4j

@Slf4j
class LogExample {
  void log() {
    log.info "Start logging"
    log.warn "Logging with a {} or {}", "parameter", "two"
    log.debug "Detailed information"
    log.info "Stop logging"
  }
}

3.25 请求日志记录

Ratpack 提供了一种机制来记录有关每个请求的信息,RequestLogger。请求记录器是一个处理程序。每个流经它的请求将在请求完成后被记录。通常,它被放置在处理程序链的早期,并使用Chain.all(Handler) 方法添加,以便记录所有请求。

Ratpack 提供了 RequestLogger.ncsa() 方法,该方法以 NCSA 通用日志格式 进行记录。此实现将日志记录到名为ratpack.requests 的 slf4j 记录器(RequestLogger.ncsa(Logger) 方法允许指定替代记录器)。

import ratpack.core.handling.RequestLogger;
import ratpack.core.http.client.ReceivedResponse;
import ratpack.test.embed.EmbeddedApp;
import static org.junit.jupiter.api.Assertions.*;

public class Example {
  public static void main(String... args) throws Exception {
    EmbeddedApp.fromHandlers(c -> c
      .all(RequestLogger.ncsa())
      .all(ctx -> ctx.render("ok"))
    ).test(httpClient -> {
      ReceivedResponse response = httpClient.get();
      assertEquals("ok", response.getBody().getText());

      // Check log output: [ratpack-compute-1-1] INFO ratpack.requests - 127.0.0.1 - - [30/Jun/2015:11:01:18 -0500] "GET / HTTP/1.1" 200 2
    });
  }
}

有关使用替代格式创建记录器的信息,请参阅 RequestLogger 的文档。