簡體   English   中英

在 Spring Boot 中的 application.properties 中獲取用戶主路徑

[英]Getting the user home path in application.properties in Spring Boot

這應該是一項非常直接的任務,但在做了大量研究之后,我發現很難找到任何方法來做到這一點。

我只想在當前用戶的主目錄中創建一個日志文件。 根據官方文檔,我應該修改的變量是logging.filelogging.path 但是如何將 user-home 的值放入logging.path

我嘗試將其設置為:

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

但沒有任何成功。

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

${HOME}替換為環境變量HOME

${user.home}就是你的答案。

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

彈簧靴 2.2.6

我相信我已經解決了這個問題。 有問題的日志文件實際上是在從 IDE (Eclipse Luna FYI) 運行時才在類路徑中生成的。 稍后,當我制作一個 jar 文件並運行它時,日志文件會在application.properties文件中指定的正確位置生成。 當我從 Eclipse 運行它時,我仍然不知道為什么它會在類路徑中生成。

我在開發環境中遇到了同樣的問題,所以我嘗試了另一種方法。 如果您已閱讀官方文檔它還說明您可以提供自定義配置。 如果沒有自定義配置提供 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>

logging.path=~/logs.

簡單的解決方案是使用~符號作為主目錄,在 linux/mac/windows 上運行良好。

SpringBoot 2.2.6

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM