AbstractNCSARequestLog 不适用于 log4j
AbstractNCSARequestLog not working for log4j
我正在使用 Java Spark(网络框架)并且我正在学习本教程: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
with a 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 Spark(网络框架)并且我正在学习本教程: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
with a 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);