2014-04-27 57 views
29

如何在由spring启动提供的嵌入式tomcat服务器中启用http服务器日志?我在application.properties试过,但它不创建文件,既不日志安慰Spring Boot启用http请求日志记录

#application.properties 
server.tomcat.access-log-enabled=true 
server.tomcat.access-log-pattern=%a asdasd 
logging.file=/home/mati/mylog.log 
spring boot 1.0.1.RELEASE 
+0

我假设你的意思是“application.properties”?文件名中的拼写错误是我能看到的唯一明显的错误。请注意,'logging.file'对tomcat访问日志没有影响(尽管如果你使用的是“正常”项目设置,那么该文件应该被创建)。通常,Tomcat阀以“./logs”(即相对于user.dir)创建日志。 –

+0

是的,那是我的拼写错误,但在我的项目中是正确的。我知道Spring读取它是正确的,因为'server.port = 9900'正常工作。我看不到你指定的目录:( – Mati

+0

你可以分享你的项目吗? –

回答

30

尝试

server.tomcat.accessLogEnabled=true 
server.tomcat.accessLogPattern=%a asdasd 

,并期待在/tmp/tomcat.<random>.<port>/logs为输出文件。设置server.tomcat.basedir属性来更改目录。

+3

在Windows下,Tomcat在'%TEMP%\ tomcat下创建日志文件。 。代替 \ logs。它不*相对于user.dir – Henning

+0

我认为在所有平台上都是如此(除非你明确地设置了'server.tomact.basedir'),但它可能不是在第一次创建这个答案时。 –

+0

这是否也适用于Jetty? – BamaPookie

31

这里去一个办法让它们显示在控制台或任何文件,你选择。声明Tomcat的RequestDumperFilter任何@Configuration类:

@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 =============================================================== 

然后再管理它作为任何标准春季启动日志。

11

在春季启动1.5.1 properties mentioned by Dave Syer不再起作用,而不是他们改名成:

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

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