Java Spring Boot 启用 http 请求日志记录(访问日志)
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/23325389/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Spring Boot enable http requests logging (access logs)
提问by Mati
How to enable access logs in an embedded tomcatserver provided by spring boot? I've tried this in application.properties
but it doesn't create file, neither logs to console.
如何在spring boot提供的嵌入式tomcat服务器中启用访问日志?我试过这个,但它没有创建文件,也没有记录到控制台。application.properties
server.tomcat.access-log-enabled=true
server.tomcat.access-log-pattern=%a asdasd
logging.file=/home/mati/mylog.log
采纳答案by Dave Syer
Try
尝试
server.tomcat.accessLogEnabled=true
server.tomcat.accessLogPattern=%a asdasd
and look in /tmp/tomcat.<random>.<port>/logs
for the output files. Set server.tomcat.basedir
property to change the directory.
并查找/tmp/tomcat.<random>.<port>/logs
输出文件。设置 server.tomcat.basedir
属性以更改目录。
回答by Xtreme Biker
Here it goes a way to have them displayed in console or whatever file you choose. Declare Tomcat's RequestDumperFilter
in any @Configuration
class:
这是一种让它们显示在控制台或您选择的任何文件中的方法。RequestDumperFilter
在任何@Configuration
类中声明 Tomcat 的:
@Bean
public FilterRegistrationBean requestDumperFilter() {
FilterRegistrationBean registration = new FilterRegistrationBean();
Filter requestDumperFilter = new RequestDumperFilter();
registration.setFilter(requestDumperFilter);
registration.addUrlPatterns("/*");
return registration;
}
And that's the output:
这就是输出:
http-nio-8765-exec-1 START TIME =30-may-2016 12:45:41
http-nio-8765-exec-1 requestURI=/info
http-nio-8765-exec-1 authType=null
http-nio-8765-exec-1 characterEncoding=UTF-8
http-nio-8765-exec-1 contentLength=-1
http-nio-8765-exec-1 contentType=null
http-nio-8765-exec-1 contextPath=
http-nio-8765-exec-1 cookie=JSESSIONID=E7259F5F9ED6B04CBE5A294C5F8CA5C6
http-nio-8765-exec-1 header=host=mies-057:8765
http-nio-8765-exec-1 header=connection=keep-alive
http-nio-8765-exec-1 header=accept=text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
http-nio-8765-exec-1 header=upgrade-insecure-requests=1
http-nio-8765-exec-1 header=user-agent=Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36
http-nio-8765-exec-1 header=referer=http://mies-057:1111/
http-nio-8765-exec-1 header=accept-encoding=gzip, deflate, sdch
http-nio-8765-exec-1 header=accept-language=es-ES,es;q=0.8
http-nio-8765-exec-1 header=cookie=JSESSIONID=E7259F5F9ED6B04CBE5A294C5F8CA5C6
http-nio-8765-exec-1 locale=es_ES
http-nio-8765-exec-1 method=GET
http-nio-8765-exec-1 pathInfo=null
http-nio-8765-exec-1 protocol=HTTP/1.1
http-nio-8765-exec-1 queryString=null
http-nio-8765-exec-1 remoteAddr=192.168.56.1
http-nio-8765-exec-1 remoteHost=192.168.56.1
http-nio-8765-exec-1 remoteUser=null
http-nio-8765-exec-1 requestedSessionId=E7259F5F9ED6B04CBE5A294C5F8CA5C6
http-nio-8765-exec-1 scheme=http
http-nio-8765-exec-1 serverName=mies-057
http-nio-8765-exec-1 serverPort=8765
http-nio-8765-exec-1 servletPath=/info
http-nio-8765-exec-1 isSecure=false
http-nio-8765-exec-1 ------------------=--------------------------------------------
http-nio-8765-exec-1 ------------------=--------------------------------------------
http-nio-8765-exec-1 authType=null
http-nio-8765-exec-1 contentType=application/json;charset=UTF-8
http-nio-8765-exec-1 header=Strict-Transport-Security=max-age=31536000 ; includeSubDomains
http-nio-8765-exec-1 header=X-Application-Context=EDGE:8765
http-nio-8765-exec-1 header=Content-Type=application/json;charset=UTF-8
http-nio-8765-exec-1 header=Transfer-Encoding=chunked
http-nio-8765-exec-1 header=Date=Mon, 30 May 2016 10:45:41 GMT
http-nio-8765-exec-1 status=200
http-nio-8765-exec-1 END TIME =30-may-2016 12:45:41
http-nio-8765-exec-1 ===============================================================
Then manage it as any standard Spring Boot log.
然后将其作为任何标准 Spring Boot 日志进行管理。
回答by gerrytan
In Spring Boot 1.5.1 the properties mentioned by Dave Syerno longer works, instead they're renamed into:
在 Spring Boot 1.5.1中,Dave Syer 提到的属性不再起作用,而是将它们重命名为:
server.tomcat.basedir=target/tomcat-logs
server.tomcat.accesslog.enabled=true
server.tomcat.accesslog.pattern=%t %a "%r" %s (%D ms)
Using the configuration above, if running the project via its root directory the log will be available at target/tomcat-logs/log/access_log.*
使用上面的配置,如果通过其根目录运行项目,日志将在 target/tomcat-logs/log/access_log.* 中可用
回答by veben
With Spring Boot 2.X, if you want to manage Access logs, add these lines to your application.yml
file:
使用 Spring Boot 2.X,如果您想管理访问日志,请将这些行添加到您的application.yml
文件中:
server:
tomcat:
basedir: /home/tmp
accesslog:
enabled: true
It will create a folder named logs
in the basedir you defined (/home/tmp
here) containing the access log files.
它将创建一个以logs
您定义的 basedir命名的文件夹(/home/tmp
此处),其中包含访问日志文件。
If you want to have access logs in the console do like that:
如果您想在控制台中访问日志,请执行以下操作:
server:
tomcat:
accesslog:
enabled: true
directory: /dev
prefix: stdout
buffered: false
suffix:
file-date-format:
It will rediect logs to /dev/stdout
它将日志重定向到/dev/stdout
More informations: https://community.pivotal.io/s/article/how-to-configure-access-log-entries-for-a-spring-boot-app?language=en_US
更多信息:https: //community.pivotal.io/s/article/how-to-configure-access-log-entries-for-a-spring-boot-app?language=en_US