美文网首页
logback.xml读取application.propert

logback.xml读取application.propert

作者: _浅墨_ | 来源:发表于2021-02-03 10:01 被阅读0次

    网上有说:

    最先加载的是application.properties,logback.xml的加载晚于application.properties,所以logback.xml可以读到application.properties里面配置的值。logback.xml的加载要先于application.yml,所以直接通过${参数key}的形式获取是无法获取到application.yml对应参数值的。

    \color{rgb(205,38,81)}{注: }
    亲测,即使是在 application.properties里,直接写 <property name="logging.path" source="logging.path"/> 也不行的,需要写成 <springProperty scope="context" name="logging.path" source="logging.path"/>

    以下为开发步骤:

    一、配置 logback.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <configuration scan="true" scanPeriod="10 seconds">
    
        <!-- 日志输出路径: logging.path 在application.properties中配置,注意下面是 springProperty 不是 property -->
        <springProperty scope="context" name="logging.path" source="logging.path"/>
        <!-- 日志输出格式 -->
        <property name="log.pattern" value="%d{YY-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
    
        <include resource="org/springframework/boot/logging/logback/base.xml"/>
        <contextName>logback</contextName>
       
    
        <!-- 系统日志输出 -->
        <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <file>${logging.path}/sys-info.log</file>
            <!-- 循环政策:基于时间创建日志文件 -->
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <!-- 日志文件名格式 -->
                <fileNamePattern>${logging.path}/sys-info.%d{yyyy-MM-dd}.log</fileNamePattern>
                <!-- 日志最大的历史 60天 -->
                <maxHistory>60</maxHistory>
            </rollingPolicy>
            <encoder>
                <pattern>${log.pattern}</pattern>
            </encoder>
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <!-- 过滤的级别 -->
                <level>INFO</level>
                <!-- 匹配时的操作:接收(记录) -->
                <onMatch>ACCEPT</onMatch>
                <!-- 不匹配时的操作:拒绝(不记录) -->
                <onMismatch>DENY</onMismatch>
            </filter>
        </appender>
    
        <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <file>${logging.path}/sys-error.log</file>
            <!-- 循环政策:基于时间创建日志文件 -->
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <!-- 日志文件名格式 -->
                <fileNamePattern>${logging.path}/sys-error.%d{yyyy-MM-dd}.log</fileNamePattern>
                <!-- 日志最大的历史 60天 -->
                <maxHistory>60</maxHistory>
            </rollingPolicy>
            <encoder>
                <pattern>${log.pattern}</pattern>
            </encoder>
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <!-- 过滤的级别 -->
                <level>ERROR</level>
                <!-- 匹配时的操作:接收(记录) -->
                <onMatch>ACCEPT</onMatch>
                <!-- 不匹配时的操作:拒绝(不记录) -->
                <onMismatch>DENY</onMismatch>
            </filter>
        </appender>
    
        <root level="INFO">
            <appender-ref ref="CONSOLE"/>
            <!-- 添加本地日志记录 -->
            <appender-ref ref="file_info" />
            <appender-ref ref="file_error" />
        </root>
        <logger name="org.apache.flume.sink.LoggerSink" additivity="false">
            <level value="INFO"/>
        </logger>
    </configuration>
    
    二、在项目 application.properties 中添加自定义路径设置
    # 自定义日志输出文件所在文件夹路径
    logging.path=/Volumes/F/testLog
    

    \color{rgb(205,38,81)}{注:}

    自定义日志输出文件所在文件夹路径: 这个也可以配置在 jave -jar --logging.path命令中

    \color{rgb(205,38,81)}{以上设置也可以写成下面这样,变量从 docker 命令获取}

    # 自定义日志输出文件所在文件夹路径: 这个可以配置在 jave -jar --logging.path=/Volumes/F/testLog 命令中
    #logging.path=/home
    #logging.path=/Volumes/F/testLog
    #${LOG_PATH} 在 docker 命令变量中获取,如果获取不到默认值为""
    logging.path=${LOG_PATH:""}
    
    三、注意

    \color{rgb(205,38,81)}{注:}
    如果logback.xml 配置的是 <include resource="org/springframework/boot/logging/logback/base.xml”/>而不是下面两个,会默认多生成一个日志文件。

    <!--    <include resource="org/springframework/boot/logging/logback/base.xml"/>-->
        <include resource="org/springframework/boot/logging/logback/defaults.xml" />
        <include resource="org/springframework/boot/logging/logback/console-appender.xml" />
    

    /spring.log 文件

    相关文章

      网友评论

          本文标题:logback.xml读取application.propert

          本文链接:https://www.haomeiwen.com/subject/lhrptltx.html