【问题标题】:How to set absolute logdir in spring-boot?如何在spring-boot中设置绝对logdir?
【发布时间】:2017-05-12 07:13:51
【问题描述】:

https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html

根据上面的文档,我可以如下设置日志路径和文件名。

logging.file=/var/log/mylog.log.

但是:我看到日志记录到控制台,但日志文件永远不会写(文件系统上没有!)。

当我按如下方式更改属性时:

logging.file=var/log/mylog.log。 然后我会登录classpathroot/var/log/mylog.log

问题:为什么它在类路径根目录下工作,而不是在/var/log

【问题讨论】:

  • 您是同时使用 logging.file 和 logging.path 还是只使用 logging.file ?我问这个问题,因为我在这里回答了你:stackoverflow.com/a/40913904/270371 关于它。
  • 我只使用logging.file
  • 这看起来不错。没有访问权限问题吗?检查它并尝试另一条您确信您对其拥有权限的路径。
  • 伙计,你是对的。 /log 的文件夹权限为 root syslog。我能做些什么呢?
  • 对于有关路径的错误信息,我们深表歉意。我误读了。关于权限,它是经典的。关于这一点的几件事。如果您在系统中运行它,那么您可以使用chmod 更改该文件夹的权限,或者如果您在某个服务器上运行它,您可以将运行此应用程序的用户添加到一个组并赋予该组写入权限

标签: java spring logging spring-boot


【解决方案1】:

按照此处的说明使用logging.path=/var/log/mylog.log
https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html 第 26.3 节

【讨论】:

  • 也不起作用...根据文档,这应该与logging.file一起使用:“写入指定的日志文件。名称可以是确切位置或相对于当前目录。”
  • @pvpkiran 你所说的与文档相矛盾。使用 logging.path 时,不应在路径中指定文件。只是指定具体目录
  • 请再次阅读文档。使用logging.path 只能指定路径,而不能 指定文件名。 logging.file 两者都可以。
【解决方案2】:

如果在logging.file的值中使用相对路径,则会将登录保存在当前目录下。如本节所述。

写入指定的日志文件。名称可以是准确的位置,也可以是相对于当前目录的位置。

但是如果你在值中提供绝对路径。那么就完全没有问题了。但我认为在您的情况下,您放置了一个不允许您尝试运行应用程序的用户写入文件的目录。

最好提供一个有写文件权限的目录,或者授予应用程序用户(将运行应用程序)在给定目录中写文件的权限。

【讨论】:

    猜你喜欢
    • 2014-11-01
    • 2016-05-03
    • 2019-05-12
    • 1970-01-01
    • 1970-01-01
    • 2020-09-29
    • 2017-01-23
    • 2017-07-29
    • 2019-02-01
    相关资源
    最近更新 更多