如何在由 Spring Boot 提供的嵌入式 Tomcat 服务器中启用访问日志?我已经在application.properties
中尝试过,但它既没有创建文件,也没有记录到控制台。
server.tomcat.access-log-enabled=true
server.tomcat.access-log-pattern=%a asdasd
logging.file=/home/mati/mylog.log
如何在由 Spring Boot 提供的嵌入式 Tomcat 服务器中启用访问日志?我已经在application.properties
中尝试过,但它既没有创建文件,也没有记录到控制台。
server.tomcat.access-log-enabled=true
server.tomcat.access-log-pattern=%a asdasd
logging.file=/home/mati/mylog.log
以下提供一种将它们显示在控制台或任何您选择的文件中的方法。在任何@Configuration
类中声明Tomcat的RequestDumperFilter
:
@Bean
public FilterRegistrationBean requestDumperFilter() {
FilterRegistrationBean registration = new FilterRegistrationBean();
Filter requestDumperFilter = new RequestDumperFilter();
registration.setFilter(requestDumperFilter);
registration.addUrlPatterns("/*");
return registration;
}
这是输出结果:
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 ===============================================================
然后按照标准的Spring Boot日志管理。
尝试
server.tomcat.accessLogEnabled=true
server.tomcat.accessLogPattern=%a asdasd
查看 /tmp/tomcat.<随机数>.<端口号>/logs
目录以获取输出文件。设置 server.tomcat.basedir
属性以更改目录。
%TEMP%\tomcat.<randomID>.<portnumber>\logs
目录下,而不是相对于user.dir
目录。请注意,这并不影响用户使用。 - Henningserver.tomact.basedir
),但当此答案首次创建时可能不是这样。 - Dave Syerserver.tomcat.basedir=target/tomcat-logs
server.tomcat.accesslog.enabled=true
server.tomcat.accesslog.pattern=%t %a "%r" %s (%D ms)
如果你想管理访问日志,那么在你的application.yml
文件中添加以下行:
使用Spring Boot 2.X版本。
server:
tomcat:
basedir: /home/tmp
accesslog:
enabled: true
它将在您定义的基目录中(此处为/home/tmp
)创建名为logs
的文件夹,其中包含访问日志文件。server:
tomcat:
accesslog:
enabled: true
directory: /dev
prefix: stdout
buffered: false
suffix:
file-date-format:
它将重定向日志到/dev/stdout
stdout
,这对于容器化应用程序可能是有用的,而无需修改任何代码或配置文件,您可以添加以下环境变量。server.tomcat.accesslog.enabled=true
server.tomcat.accesslog.directory=/dev
server.tomcat.accesslog.prefix=stdout
server.tomcat.accesslog.suffix=
server.tomcat.accesslog.file-date-format=
suffix
和file-date-format
应该设置为无。
server.port=9900
可以正常工作。我无法看到你指定的目录 :( - Mati