首页 > 解决方案 > 如何打印访问日志中的每个请求

问题描述

我有一项服务 AccessLogsApplication,其中我有一个控制器 HelloWorld。我想在 Spring Boot 中将每个传入请求打印在名为 access_log.log 的单独日志文件中。

@RestController
public class HelloWorld {

private static final Logger log = LoggerFactory.getLogger(HelloWorld.class);

@RequestMapping(value = "/hello/1", method = RequestMethod.GET)
public String getHello() {
    log.info("In method 1");
    return "helloWorld";
}

@RequestMapping(value = "/hello/2", method = RequestMethod.GET)
public String getHelloFromUser() {
    log.info("In method 2");
    return "helloWorld From Sudhanshu Saini";
 }
}

这是我的 application.properties

spring.application.name=HelloWorld
server.port=8080

server.tomcat.accesslog.buffered=true
server.tomcat.accesslog.enabled=true
server.tomcat.accesslog.directory=logs
server.tomcat.accesslog.prefix=access_log
server.tomcat.accesslog.suffix=.log
server.tomcat.accesslog.pattern="%h %l %u %t %r %s %b %D"


logging.level.root=warn
logging.level.com.saini.access_logs=debug

logging.path=logs
logging.file=${logging.path}/hello_service.log

我想记录这个服务的每一个即将到来的请求。像这样(这是我手动编写的,不是访问日志)-

  [03/May/2019:16:37:52 +0530] "GET /hello/1 HTTP/1.0" 200 2
  [03/May/2019:16:37:52 +0530] "GET /hello/2 HTTP/1.0" 200 2

访问日志在 Spring Boot 中不起作用。它没有创建文件 access_log.log

标签: restspring-boot

解决方案


还有 SLF4J 库,而不是使用来自 java.util 的标准日志记录。这里有三种带有日志记录事件的材料:

也许它会有所帮助:)


推荐阅读