Java Spring引导启用http请求日志记录(访问日志)

Java Spring引导启用http请求日志记录(访问日志),java,http,tomcat,logging,spring-boot,Java,Http,Tomcat,Logging,Spring Boot,如何在spring boot提供的嵌入式tomcat服务器中启用访问日志?我在application.properties中尝试过这个方法,但它不会创建文件,也不会登录到控制台 server.tomcat.access-log-enabled=true server.tomcat.access-log-pattern=%a asdasd logging.file=/home/mati/mylog.log 试一试 并在/tmp/tomcat../logs中查找输出文件。设置server.tomc

如何在spring boot提供的嵌入式tomcat服务器中启用访问日志?我在
application.properties
中尝试过这个方法,但它不会创建文件,也不会登录到控制台

server.tomcat.access-log-enabled=true
server.tomcat.access-log-pattern=%a asdasd
logging.file=/home/mati/mylog.log
试一试


并在
/tmp/tomcat../logs
中查找输出文件。设置
server.tomcat.basedir
属性以更改目录。

这里可以让它们显示在控制台或您选择的任何文件中。在任何
@配置
类中声明Tomcat:

@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引导日志进行管理。

在Spring Boot 1.5.1中,它们不再工作,而是重命名为:

server.tomcat.basedir=target/tomcat-logs
server.tomcat.accesslog.enabled=true
server.tomcat.accesslog.pattern=%t %a "%r" %s (%D ms)

使用上面的配置,如果通过根目录运行项目,日志将在target/tomcat logs/log/access_log.*

和Spring Boot2.X,如果要管理访问日志,请将以下行添加到
应用程序.yml
文件中:

server:
  tomcat:
    basedir: /home/tmp
    accesslog:
      enabled: true
它将在您定义的basedir(
/home/tmp
此处)中创建一个名为
logs
的文件夹,其中包含访问日志文件

如果希望在控制台中有访问日志,请执行以下操作:

server:
  tomcat:
    accesslog:
      enabled: true
      directory: /dev
      prefix: stdout
      buffered: false
      suffix:
      file-date-format:
它将把日志重新定向到/dev/stdout


更多信息:

我想你的意思是“application.properties”?文件名中的拼写错误是我能看到的唯一明显错误。请注意,
logging.file
对tomcat访问日志没有影响(尽管如果您使用的是“正常”项目设置,则应该创建该文件)。通常Tomcat阀在“/logs”(即相对于user.dir)中创建日志。是的,这是我的拼写错误,但在我的项目中是正确的。我知道Spring读取它是正确的,因为
server.port=9900
工作正常。我看不到您指定的目录:(你能分享你的项目吗?不幸的是,不,这是我工作中的项目…也许在配置或pom.xml中需要一些东西才能让它工作?对我来说很好。也许你可以创建一个简单的项目,它的行为不符合你的预期,然后发布到github中?如果有帮助,下面是一个成功使用访问日志的应用程序示例:。在Windows下,Tomcat在
%TEMP%\Tomcat..\logs
下创建日志文件。它与user.dir无关。我认为这在所有平台上都是正确的(除非您显式设置
server.tomact.basedir
),但在第一次创建此答案时可能不是这样。对于Spring boot最新版本:
server:
  tomcat:
    accesslog:
      enabled: true
      directory: /dev
      prefix: stdout
      buffered: false
      suffix:
      file-date-format: