logback.xml读取application.properties自定义日志路径

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了logback.xml读取application.properties自定义日志路径相关的知识,希望对你有一定的参考价值。

参考技术A 网上有说:

亲测,即使是在 application.properties里,直接写 <property name="logging.path" source="logging.path"/> 也不行的,需要写成 <springProperty scope="context" name="logging.path" source="logging.path"/>

以下为开发步骤:

如果logback.xml 配置的是 <include resource="org/springframework/boot/logging/logback/base.xml”/>而不是下面两个,会默认多生成一个日志文件。

/spring.log 文件

logback-spring.xml读取spring的属性

1. application.yml

info:
  name: file-uploader-service
# 日志目录(已过期,不建议使用)
logging:
  path: home/logs
  file: file-uploader-service
server:
  # 指定Tomcat端口
  port: 8000
eureka:
  client:
    serviceUrl:
      # 指定eureka server通信地址,注意/eureka/小尾巴不能少
      defaultZone: http://${EUREKA_HOST}:${EUREKA_PORT}/eureka/
ribbon:
  ConnectTimeout: 1800000  #连接超时
  ReadTimeout: 1800000     #读取超时

2. logback-spring.xml

方法一:

 <!-- 日志文件保存路径 -->
    <property name="log_home" value="${LOG_PATH}"/>
    <property name="prefix_name" value="${LOG_FILE}"/>

方法二:

<!-- 日志文件保存路径 -->
	<property name="log_home" value="${logs}"/>
	<!-- 读取spring配置 -->
	<springProperty scope="context" name="prefix_name" source="info.name"/>
	<!--<property name="prefix_name" value="${info_name}"/>-->
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!-- 日志文件保存路径 -->
    <property name="log_home" value="${LOG_PATH}"/>
    <property name="prefix_name" value="${LOG_FILE}"/>

    <!-- 日志输出格式 -->
    <property name="ENCODER_PATTERN" value="%d{yyyy-MM-dd  HH:mm:ss.SSS} - %msg%n"/>
    <property name="CONSOLE_PATTERN" value="[%d{yyyy-MM-dd HH:mm:ss SSS}][%p] %m%n" />

    <!-- 控制台日志:输出全部日志到控制台 -->
    <appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${CONSOLE_PATTERN}</pattern>
        </encoder>
    </appender>

    <!-- 文件日志:输出指定日志到文件 -->
    <appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>INFO</level>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log_home}/${prefix_name}-info-%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>14</maxHistory>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${CONSOLE_PATTERN}</pattern>
        </encoder>
    </appender>

    <appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log_home}/${prefix_name}-error-%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>14</maxHistory>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${CONSOLE_PATTERN}</pattern>
        </encoder>
    </appender>

    <root level="info">
        <appender-ref ref="consoleLog"/>
        <appender-ref ref="fileInfoLog"/>
        <appender-ref ref="fileErrorLog"/>
    </root>
</configuration>

以上是关于logback.xml读取application.properties自定义日志路径的主要内容,如果未能解决你的问题,请参考以下文章

logback.xml引入外部配置文件

logback-spring.xml读取spring的属性

$application.home 如何在 play 框架的 conf/logback.xml 中解析?

SpringBoot中logback.xml使用application.yml中属性

SpringBoot中logback.xml使用application.yml中属性

logback.xml和logback-spring.xml的区别