Chr*_*ius 27 spring logback slf4j spring-boot
我使用Spring Boot并希望它将日志输出写入文件.
根据文档,这只是通过设置完成
logging.file=filename.log
Run Code Online (Sandbox Code Playgroud)
虽然控制台输出工作正常,filename.log但未创建.此外,如果我手动创建文件,则不会写入任何内容.我错过了什么?
小智 56
使用logging.file.name代替logging.file
在 的更高版本中spring-boot-parent(from version 2.2.0),不推荐使用属性 logging.file。
Chr*_*ius 16
我找到了解决方案.我对它不是很满意,因为它仍然没有回答我原来的问题,为什么logging.file财产不受尊重.
我在同一个目录中创建了logback-spring.xmlGeorges的答案application.properties.根据文档, Spring Boot将从那里获取它.显然,在我的情况下,这不会发生.
我需要另外添加logging.config=classpath:logback-spring.xml,以便它被Spring接收.我的相关部分application.properties现在
logging.config=classpath:logback-spring.xml
logging.file=logs/logfile.log
Run Code Online (Sandbox Code Playgroud)
(我logs手动创建了目录.)
Ind*_*our 15
就我而言,我在下面的应用程序属性文件中使用。
logging.file
相反,我需要使用以下一个:
logging.file.name
从那时起,我就可以将日志放入定向路径文件中。
Spring Boot:版本 2.4.3
其中之一应在application.propertiesfile: logging.file.name或logging.file.path
例如:
logging.file.name=logs/myapp.log
logging.file.path=logs
Run Code Online (Sandbox Code Playgroud)
您不必创建logs目录。它将在类路径中自动创建。
要查看其他已弃用的属性,请阅读此类文件~/.m2/repository/org/springframework/boot/spring-boot/2.4.3/spring-boot-2.4.3.jar!/org/springframework/boot/logging/LoggingSystemProperties.class
我有同样的问题。这很可能是由于文件系统上的文件权限所致。我的应用程序文件夹归 root 所有,但 ./logs 归进程所有者所有。因此,以下方法不起作用:
logging.file=my.log
但这确实
logging.file=/opt/myapp/logs/my.log
我不知道这是否对您有帮助,但我也在我的Spring-Boot项目中使用了 Logback ,其结构如下
文件: logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="logback.xsd">
<property resource="\application.properties"/>
<appender name="FILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${app.logPathPrefix}/myproject.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${app.logPathPrefix}/myproject.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>50MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%level] [%thread] [%logger:%line] %msg%n
</pattern>
</encoder>
</appender>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%level] [%thread] [%logger:%line] %msg%n
</pattern>
</encoder>
</appender>
<logger name="org.springframework" level="INFO" />
<logger name="com.mycompany" level="INFO" />
<logger name="org.hibernate" level="DEBUG" />
<root level="INFO">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
</root>
</configuration>
Run Code Online (Sandbox Code Playgroud)
文件: application.properties
app.logPathPrefix=/var/log/myproject
Run Code Online (Sandbox Code Playgroud)
这是我设法将输出写入本地文件的方法。要禁用控制台日志记录并将输出仅写入文件,您需要一个自定义的logback-spring.xml (将其称为logback-spring.xml,以便您可以利用 Boot 提供的模板功能(日期格式等))导入file-appender.xml而不是 console-appender.xml。为了实现这一点,您必须将此代码粘贴到您的 logback-spring.xml 文件中。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
<property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}/}spring.log}"/>
<include resource="org/springframework/boot/logging/logback/file-appender.xml" />
<root level="INFO">
<appender-ref ref="FILE" />
</root>
</configuration>
Run Code Online (Sandbox Code Playgroud)
您还需要将以下内容添加到您的 application.properties 中:
logging.file=myapplication.log
Run Code Online (Sandbox Code Playgroud)
请注意,此日志文件myapplication.log将由 springboot 生成。
这是我的应用程序结构树的样子:
如果你想玩得更开心,你可以在你的 maven 依赖中找到 base.xml,如下所示:
| 归档时间: |
|
| 查看次数: |
36857 次 |
| 最近记录: |