我正在开发一个Spring Boot应用程序,并希望通过我的slf4j日志系统并最终到达远程syslog来路由Tomcat的访问日志。由于这是Spring,我想避免触及tomcat的server.xml文件。我的AccessLogValve非常简单:
我希望能够使用类似以下内容将其连接到Tomcat:
import java.io.CharArrayWriter;
import org.apache.catalina.valves.AccessLogValve;
public class Log4JAccessLogValve extends AccessLogValve {
@Override
public void log(CharArrayWriter message) {
log.info(message.toString());
}
}
我希望能够使用类似以下内容将其连接到Tomcat:
而我希望能够使用类似以下内容将其连接到Tomcat:
@Component
public class LogConfig {
@Autowired
private ServletContext servletContext;
@PostConstruct
public void setAccessLogValve() {
((ApplicationContextFacade)servletContext).addValve(new Log4JAccessLogValve());
}
}
除了addValve()方法不存在之外...
那么...有人知道我如何挂钩我的AccessLogValve吗?
我也愿意接受完全不同的建议,以将访问日志记录到远程syslog中,但我们正在创建数十个微服务,因此必须采用相当标准化的方法,对于每个微服务都很容易实现。