Java 在Linux上部署spring引导应用程序时,日志文件端点出现错误404

Java 在Linux上部署spring引导应用程序时,日志文件端点出现错误404,java,linux,spring,rest,spring-mvc,Java,Linux,Spring,Rest,Spring Mvc,我有一个为RESTAPI编写的简单spring引导应用程序。我正在尝试使用logback将日志记录到文件中。当应用程序部署在我的windows机器上的eclipse中,并且我可以在/logfile端点上看到我的所有日志时,它工作正常 当我在Linux机器上部署相同的应用程序时,会按预期创建和更新日志文件,但是当我尝试通过浏览器访问日志文件时,在同一个端点(/logfile)上会得到404 任何帮助都将不胜感激 我的logback配置如下所示 logback-spring.xml <

我有一个为RESTAPI编写的简单spring引导应用程序。我正在尝试使用logback将日志记录到文件中。当应用程序部署在我的windows机器上的eclipse中,并且我可以在/logfile端点上看到我的所有日志时,它工作正常

当我在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>
日志文件将异常记录为

 : 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
这是我的最小示例

在您的示例和问题中的配置中,
logging.file
属性的值后面都有一个空格。问题中的值是
“log/vixenapi.log”
,应该是
“log/vixenapi.log”

您可以通过为
org.springframework.boot.actuate.endpoint.mvc
启用调试日志来确认问题<代码>日志文件MVCENDPOINT将在日志文件不存在时记录一条消息,其中包括已检查的路径:

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

请注意路径末尾的尾随空格。

仅从您的描述很难说为什么会发生这种情况。作为Spring引导构建的一部分的登录点测试在Linux上运行,因此我认为这是特定于您的环境的。检查日志文件的用户/文件权限可能是一个很好的开始。如果做不到这一点,我建议提供这一点来说明问题所在。@PhilWebb感谢您的回复。我已经检查了所有权限,它们都正常(777)我已经检查了文件权限等,它们看起来都很好。我添加了上面日志的摘录。您使用的是哪个版本的Spring Boot?从日志输出判断,似乎您使用的是1.4.0或更早版本。如果您使用的是1.4.1或更高版本,则意味着不会出现有关空位置列表的警告。此外,您的配置和您发出的请求似乎不匹配。上下文路径是
/api
,但日志输出显示正在向
/com.causway.vixen.api
发出请求。如果没有Phil已经提出的要求,就很难取得进展。谢谢你的帮助。我现在觉得自己像个白痴。我确实看到了那个空间,但并没有考虑太多,因为Eclipse正在为我修剪它。这个问题现在已经解决了。如何打开调试日志记录?非常感谢。将
logging.level.org.springframework.boot.actuate.endpoint.mvc=DEBUG
添加到您的
application.properties
。非常感谢。你真是个明星。
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