13

有没有办法设置单个目标文件夹,这样我就可以指定所有日志文件的创建位置,而不必逐个附加器设置它?

4

3 回答 3

21

您可以在 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 也可以从系统属性或单独的属性文件中读取变量。请按照手册了解更多详细信息。

于 2015-01-04T17:21:32.840 回答
10

我已经浪费了很多时间来配置Logback以使用Spring Boot,我想分享我的配置,希望可以避免其他人浪费他们的时间。

我的示例与上面的 Andy Dufresne 类似,但有一个关键区别 - 没有<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>
于 2017-12-21T18:16:30.477 回答
3

我有一个 spring boot 应用程序,我将 fat.jar作为 systemd 服务运行。

我在如何设置相对于用户主目录的 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 中的 application.properties 中获取用户主路径

访问 logback.xml 中的应用程序属性

Spring Boot 日志记录路径

logback 如何设置日志文件的目标文件夹

于 2019-08-20T14:06:06.083 回答