【问题标题】:logback how to set destination folder for log fileslogback 如何设置日志文件的目标文件夹
【发布时间】:2015-01-04 09:13:19
【问题描述】:

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

【问题讨论】:

    标签: logback logback-groovy


    【解决方案1】:

    您可以在 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了解更多详情。

    【讨论】:

    • 您甚至不必设置属性。 “user.home”系统属性已经存在。所以你可以使用它。
    【解决方案2】:

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

    我的示例与上面的 Andy Dufresne 类似,只有一个 key 不同 - 没有 &lt;property&gt; 标签。这对我来说非常重要,因为如果您包含 &lt;property name="logs_dir" value="." /&gt;,您将无法使用系统属性覆盖它,我想这样做:

    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>
    

    【讨论】:

      【解决方案3】:

      我有一个 Spring Boot 应用程序,我将胖 .jar 作为 systemd 服务运行。

      我花了几个小时来研究如何设置相对于用户主目录的 LOG_PATH。

      这对我有用:

      • application.properties我有:

      logging.path=${HOME}/attach_logs

      • logback-spring.xml我有:

      &lt;springProperty scope="context" name="LOG_PATH" source="logging.path"/&gt;

      <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_PATH}/console.log</file>

      参考资料:

      Getting the user home path in application.properties in Spring Boot

      Accessing the application properties in logback.xml

      Spring boot logging path

      logback how to set destination folder for log files

      【讨论】:

        猜你喜欢
        • 2018-02-22
        • 2011-12-11
        • 2011-02-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多