在Spring Boot中的application.properties中获取用户主路径

时间:2015-05-25 06:34:46

标签: spring logging spring-boot spring-el

这应该是一个非常直接的任务,但经过相当多的研究后,我发现很难找到任何方法来做到这一点。

我只想在当前用户的主目录中创建一个日志文件。根据{{​​3}}我应修改的变量是logging.filelogging.path。但是如何将user-home的值转换为logging.path

我尝试过如下设置:

logging.path=#{systemProperties['user.home']}

但没有任何成功。

5 个答案:

答案 0 :(得分:2)

如果您使用的是Linux或Mac,则可以使用logging.path = $ {HOME} / logs

答案 1 :(得分:2)

${user.home}是您的答案。

例如:${user.home}/logs/app/app.log

Spring boot 2.2.6

答案 2 :(得分:1)

我相信我已经解决了这个问题。只有从IDE(Eclipse Luna FYI)运行时,才会在类路径中生成有问题的日志文件。稍后当我制作一个jar文件并运行它时,日志文件是在var finishTime = seconds; 文件中指定的正确位置生成的。当我从Eclipse运行它时,我仍然不知道为什么它在类路径中生成。

答案 3 :(得分:1)

我在开发环境中面临同样的问题,所以我尝试了另一种方法。如果您已阅读official document它还声明您可以提供自定义配置。如果没有提供IMO的自定义配置,logging.path将用作默认值。

我想使用log4j2所以我需要自定义模式和其他东西。为此,我实际上将log4j2.xml配置文件放入了类路径。查看我的xml conf文件,了解在开发和生产中实际工作的更多细节。

<?xml version="1.0" encoding="UTF-8"?>
<configuration monitorInterval="30">
    <properties>
        <property name="app.name">my-app</property>
        <property name="pattern">%d{ISO8601} %-5p %c - %m%n</property>
    </properties>
    <appenders>
        <Console name="console" target="SYSTEM_OUT">
            <PatternLayout pattern="${pattern}"/>
        </Console>

        <RollingRandomAccessFile name="my_app" append="false" fileName="${sys:user.home}\.${app.name}\logs\${app.name}.log"
                 filePattern="${sys:user.home}\.${app.name}\logs\$${date:yyyy-MM}/${app.name}-%d{yyyy-MM-dd}-%i.log.zip">
            <PatternLayout>
                <pattern>${pattern}</pattern>
            </PatternLayout>
            <Policies>
                <SizeBasedTriggeringPolicy size="5 MB"/>
            </Policies>
            <DefaultRolloverStrategy max="10"/>
        </RollingRandomAccessFile>
    </appenders>
    <loggers>
        <root level="INFO">
            <AppenderRef ref="console"/> <!-- To console -->
            <AppenderRef ref="my_app"/>
        </root>

        <AsyncLogger name="com.rameysoft.streamline.main" additivity="FALSE" level="DEBUG">
            <AppenderRef ref="console"/>
            <AppenderRef ref="my_app"/>
        </AsyncLogger>
    </loggers>
</configuration>

答案 4 :(得分:-1)

logging.path=~/logs.

简单的解决方案是在主目录中使用~符号,在linux / mac / windows上运行良好。

SpringBoot 2.2.6