2017-08-30 27 views
0

我有一個爲REST API編寫的簡單彈簧引導應用程序。我正在嘗試使用logback將日誌記錄到文件中。當應用程序在我的Windows機器上的eclipse中部署時,它可以正常工作,並且我可以在/ logfile端點上看到所有日誌。在Linux上部署彈簧引導應用程序時,日誌文件端點上的錯誤404

當我在Linux機器上部署相同的應用程序時,日誌文件按預期方式創建和更新,但是當我嘗試通過瀏覽器訪問日誌文件時,我在同一個端點(/ logfile)上獲得了404。

任何幫助將非常感激

我的logback配置如下圖

的logback-spring.xml

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <include resource="org/springframework/boot/logging/logback/base.xml"/> 
    <logger name="org.springframework.web" level="DEBUG" additivity="false"> 
     <appender-ref ref="CONSOLE"/> 
     <appender-ref ref="FILE"/> 
    </logger> 
    <logger name="api.controllers" level="DEBUG" additivity="false"> 
     <appender-ref ref="CONSOLE"/> 
     <appender-ref ref="FILE"/> 
    </logger> 
</configuration> 

我application.properties文件看起來像

server.contextPath=/api 
#Configure Access Logs 
server.tomcat.basedir=log 
server.tomcat.accesslog.enabled=true 
server.tomcat.accesslog.pattern=%t %a "%r" %s (%D ms) 

#configure other log 
logging.file=log/vixenapi.log 
logging.level.org.springframework.web=DEBUG 
logging.level.org.springframework.boot.autoconfigure.logging=DEBUG 
logging.level.org.hibernate=ERROR 
#------------------------------------- 

spring.jackson.serialization-inclusion=non_empty 

#By Default include all properties. If a view property hasn't been set then it will be shown 
spring.jackson.mapper.DEFAULT_VIEW_INCLUSION=true 

日誌文件將例外記錄爲

: Before request [uri=/com.causeway.vixen.api/logfile;client=172.16.4.56] 
2017-11-16 18:29:13.662 DEBUG 1552 --- [http-nio-8080-exec-10] o.s.web.servlet.DispatcherServlet  : DispatcherServlet with name 'dispatcherServlet' processing GET request for [/com.causeway.vixen.api/logfile] 
2017-11-16 18:29:13.662 DEBUG 1552 --- [http-nio-8080-exec-10] o.s.web.servlet.DispatcherServlet  : Last-Modified value for [/com.causeway.vixen.api/logfile] is: -1 
2017-11-16 18:29:13.663 WARN 1552 --- [http-nio-8080-exec-10] o.s.w.s.r.ResourceHttpRequestHandler  : Locations list is empty. No resources will be served unless a custom ResourceResolver is configured as an alternative to PathResourceResolver. 
2017-11-16 18:29:13.663 DEBUG 1552 --- [http-nio-8080-exec-10] o.s.web.servlet.DispatcherServlet  : Null ModelAndView returned to DispatcherServlet with name 'dispatcherServlet': assuming HandlerAdapter completed request handling 
2017-11-16 18:29:13.663 DEBUG 1552 --- [http-nio-8080-exec-10] o.s.web.servlet.DispatcherServlet  : Successfully completed request 
2017-11-16 18:29:13.663 DEBUG 1552 --- [http-nio-8080-exec-10] o.s.w.f.CommonsRequestLoggingFilter  : After request [uri=/com.causeway.vixen.api/logfile;client=172.16.4.56] 
2017-11-16 18:29:13.663 DEBUG 1552 --- [http-nio-8080-exec-10] o.s.web.servlet.DispatcherServlet  : DispatcherServlet with name 'dispatcherServlet' processing GET request for [/com.causeway.vixen.api/error] 
2017-11-16 18:29:13.664 DEBUG 1552 --- [http-nio-8080-exec-10] s.w.s.m.m.a.RequestMappingHandlerMapping : Looking up handler method for path /error 

這是我的小例子, https://github.com/spring-projects/spring-boot/files/1482233/test_api.zip

+0

這很難說,爲什麼這可能會從你的描述單獨發生。作爲Spring Boot構建一部分的日誌記錄測試在Linux上運行,所以我認爲這是特定於您的環境的事情。檢查日誌文件的用戶/文件權限可能是一個很好的開始。否則,我會建議提供[一個最小的,完整的和可驗證的示例](https://stackoverflow.com/help/mcve),顯示問題。 –

+0

@PhilWebb感謝您的回覆。我已檢查所有權限,他們都沒問題(777) – Ashutosh

+0

我檢查了文件權限等,他們都看起來不錯。我已經添加了上面日誌的摘錄。 – Ashutosh

回答

1

有在這兩個你最少例如logging.file財產,在你的問題的配置值的尾隨空格。問題中的值是"log/vixenapi.log ",它應該是"log/vixenapi.log"

您可以通過啓用org.springframework.boot.actuate.endpoint.mvc的調試日誌記錄來確認問題。 LogFileMvcEndpoint將記錄一條消息時,日誌文件不存在,包括這是檢查路徑:

2017-11-17 14:40:24.801 DEBUG 30140 --- [nio-8080-exec-1] o.s.b.a.endpoint.mvc.LogFileMvcEndpoint : Log file 'file [/Users/awilkinson/Downloads/test_api/log/test.log ]' does not exist 

注意尾隨空格在路徑的末尾。

+0

感謝您的幫助。我現在覺得自己像個白癡。我確實看到了這個空間,但並沒有考慮到這個地方,因爲Eclipse正在爲我修剪它。這現在已經修復。你如何打開調試日誌?非常感謝。 – Ashutosh

+0

將'logging.level.org.springframework.boot.actuate.endpoint.mvc = DEBUG'添加到你的'application.properties'。 –

+0

非常感謝。你是一個真正的明星。 – Ashutosh

相關問題