rest - 如何打印访问日志中的每个请求
问题描述
我有一项服务 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
解决方案
还有 SLF4J 库,而不是使用来自 java.util 的标准日志记录。这里有三种带有日志记录事件的材料:
也许它会有所帮助:)
推荐阅读
- vb.net - 跟踪窗口是最后一个焦点
- node.js - 如何将 Visual Studio 代码调试器附加到在 nginx 代理后面的 docker 机器上运行的 Node.JS 应用程序
- angular - 在 FlatMap 完成所有请求后做一个过程
- java - Bazel java.lang.ClassNotFoundException: javax.servlet.http.HttpSessionIdListener
- java - Netty中的“操作完成”是什么意思
- ruby - 如何在 Ruby 中使用 Google 数据传输 API 进行传输
- docker - docker run -v & .dockerignore 试图忽略文件夹
- java - 删除文本中数字中的多余空格
- swift - Swift 4.2,Xcode 游乐场中的 String firstIndex() 函数错误
- hive - 什么是 Hive 表名最大字符限制?