logback 如何设置日志文件的目标文件夹
logback how to set destination folder for log files
有没有一种方法可以设置单个目标文件夹,这样我就可以指定所有日志文件的创建位置,而不必逐个附加程序地进行设置?
您可以在 logback 配置文件中定义一个 属性 并按如下方式使用它
<configuration>
<property name="USER_HOME" value="/home/sebastien" />
<appender name="SPRING_LOGS" class="ch.qos.logback.core.FileAppender">
<file>${USER_HOME}/spring.log</file>
<encoder>
<pattern>%msg%n</pattern>
</encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>${USER_HOME}/myApp.log</file>
<encoder>
<pattern>%msg%n</pattern>
</encoder>
</appender>
<root level="debug">
<appender-ref ref="FILE" />
</root>
</configuration>
请注意,logback 也可以从系统属性或单独的属性文件中读取变量。关注manual了解更多详情。
我浪费了很多时间来配置 Logback 以与 Spring Boot 一起工作,我想分享我的配置,希望能避免其他人浪费他们的时间。
我的示例与上面 Andy Dufresne 的示例类似,只有一个 key 区别 - 没有 <property>
标签。这对我来说非常重要,因为如果你包含 <property name="logs_dir" value="." />
,你将无法使用系统属性覆盖它,我想这样做:
java -jar -Dlogs_dir=~/newLogsDir yourApp.jar
另请注意,默认值设置在路径变量内 - ${logs_dir:-.}
。希望这有帮助:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%-20(%d{yyyy-MM-dd HH:mm:ss} %highlight([%-5level])) %msg%n</pattern>
</encoder>
</appender>
<appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${logs_dir:-.}/system.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- rollover monthly -->
<fileNamePattern>system-%d{yyyy-MM}.log.zip</fileNamePattern>
<maxHistory>12</maxHistory>
<totalSizeCap>3GB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>%-26(%d [%-5level]) %logger{35} - %msg%n</pattern>
</encoder>
</appender>
</configuration>
我有一个 spring 引导应用程序,我 运行 胖 .jar
作为系统服务。
我为如何设置相对于用户主目录的 LOG_PATH 苦苦挣扎了几个小时。
以下是对我有用的方法:
- 在
application.properties
我有:
logging.path=${HOME}/attach_logs
- 在
logback-spring.xml
我有:
<springProperty scope="context" name="LOG_PATH" source="logging.path"/>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_PATH}/console.log</file>
参考文献:
Spring boot logging path
有没有一种方法可以设置单个目标文件夹,这样我就可以指定所有日志文件的创建位置,而不必逐个附加程序地进行设置?
您可以在 logback 配置文件中定义一个 属性 并按如下方式使用它
<configuration>
<property name="USER_HOME" value="/home/sebastien" />
<appender name="SPRING_LOGS" class="ch.qos.logback.core.FileAppender">
<file>${USER_HOME}/spring.log</file>
<encoder>
<pattern>%msg%n</pattern>
</encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>${USER_HOME}/myApp.log</file>
<encoder>
<pattern>%msg%n</pattern>
</encoder>
</appender>
<root level="debug">
<appender-ref ref="FILE" />
</root>
</configuration>
请注意,logback 也可以从系统属性或单独的属性文件中读取变量。关注manual了解更多详情。
我浪费了很多时间来配置 Logback 以与 Spring Boot 一起工作,我想分享我的配置,希望能避免其他人浪费他们的时间。
我的示例与上面 Andy Dufresne 的示例类似,只有一个 key 区别 - 没有 <property>
标签。这对我来说非常重要,因为如果你包含 <property name="logs_dir" value="." />
,你将无法使用系统属性覆盖它,我想这样做:
java -jar -Dlogs_dir=~/newLogsDir yourApp.jar
另请注意,默认值设置在路径变量内 - ${logs_dir:-.}
。希望这有帮助:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%-20(%d{yyyy-MM-dd HH:mm:ss} %highlight([%-5level])) %msg%n</pattern>
</encoder>
</appender>
<appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${logs_dir:-.}/system.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- rollover monthly -->
<fileNamePattern>system-%d{yyyy-MM}.log.zip</fileNamePattern>
<maxHistory>12</maxHistory>
<totalSizeCap>3GB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>%-26(%d [%-5level]) %logger{35} - %msg%n</pattern>
</encoder>
</appender>
</configuration>
我有一个 spring 引导应用程序,我 运行 胖 .jar
作为系统服务。
我为如何设置相对于用户主目录的 LOG_PATH 苦苦挣扎了几个小时。
以下是对我有用的方法:
- 在
application.properties
我有:
logging.path=${HOME}/attach_logs
- 在
logback-spring.xml
我有:
<springProperty scope="context" name="LOG_PATH" source="logging.path"/>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_PATH}/console.log</file>
参考文献:
Spring boot logging path