这应该是一个非常直接的任务,但经过相当多的研究后,我发现很难找到任何方法来做到这一点。
我只想在当前用户的主目录中创建一个日志文件。根据{{3}}我应修改的变量是logging.file
和logging.path
。但是如何将user-home的值转换为logging.path
?
我尝试过如下设置:
logging.path=#{systemProperties['user.home']}
但没有任何成功。
答案 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