gpt4 book ai didi

java - AbstractNCSARequestLog 不适用于 log4j

转载 作者:行者123 更新时间:2023-12-02 08:59:21 25 4
gpt4 key购买 nike

我正在使用 Java Spark(Web 框架),并且正在遵循本教程:http://sparkjava.com/tutorials/jetty-request-log以启用日志记录。

但是,下面的类(class)给了我一个错误:

constructor AbstractNCSARequestLog in class AbstractNCSARequestLog cannot be applied to given types;
return new AbstractNCSARequestLog() {
^
required: Writer
found: no arguments

相关类(class):

    public class RequestLogFactory {

private Logger logger;

public RequestLogFactory(Logger logger) {
this.logger = logger;
}

AbstractNCSARequestLog create() {
return new AbstractNCSARequestLog() {
@Override
protected boolean isEnabled() {
return true;
}

@Override
public void write(String s) throws IOException {
logger.info(s);
}
};
}
}

最佳答案

如果您想使用老式的 NCSA 请求日志格式,请使用 Slf4jRequestLog 而不是 AbstractNCSARequestLog (两者现已弃用)。

如果你想使用现代的RequestLog技术使用 CustomRequestLog Slf4jRequestLogWriter 。 (额外的好处是能够自定义请求日志格式)

使用这两种方法中的任何一种,您都需要将 slf4j 路由到 log4j(通过在类路径中包含 slf4j-log4j12-<ver>.jar)

然后您现在可以在指定记录器上捕获请求日志(记录器名称可在 Slf4jRequestLogWriter 中配置)

示例:

Slf4jRequestLogWriter slf4jWriter = new Slf4jRequestLogWriter();
// The name of the logger to write request logs to
slf4jWriter.setLoggerName("my.requestlog");
CustomRequestLog requestLog = new CustomRequestLog(slf4jWriter, CustomRequestLog.NCSA_FORMAT);
server.setRequestLog(requestLog);

关于java - AbstractNCSARequestLog 不适用于 log4j,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60281086/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com