AbstractNCSARequestLog不适用于log4j

问题描述 投票:0回答:1

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

但是下面的类给我一个错误:

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

相关课程:

    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);
            }
        };
    }
}
java log4j jetty
1个回答
0
投票

如果您要使用老式的NCSA请求日志格式,请使用Slf4jRequestLog代替Slf4jRequestLog(现已弃用)。

[如果您想使用现代的AbstractNCSARequestLog技术,请将RequestLogCustomRequestLog结合使用。 (额外的好处是可以自定义requestlog格式)

使用这些方法之一,您都需要将slf4j路由到log4j(通过在类路径中包含CustomRequestLog

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

示例:

Slf4jRequestLogWriter
© www.soinside.com 2019 - 2024. All rights reserved.