写点什么

logback 获取 bootstrap.yml 配置

作者:小黄鸡1992
  • 2021 年 12 月 03 日
  • 本文字数:3178 字

    阅读完需:约 10 分钟

logback获取bootstrap.yml配置

可以看到在 logback.xml 时,将 elasticsearch 地址写死了,但是这样就不能通过 nacos 等配置中心动态的修改了。下文将介绍如何将地址写在配置文件中。

1.修改 logback-spring.xml

<?xml version="1.0" encoding="UTF-8"?><!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 --><!-- scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true --><!-- scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 --><!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 --><configuration  scan="true" scanPeriod="10 seconds">    <contextName>logback</contextName>    <!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义变量后,可以使“${}”来使用变量。 -->    <springProperty name="ES_URL" source="logging.es-url"/>    <springProperty name="ES_PORT" source="logging.es-port"/>    <property name="LOG_HOME" value="/home/logs" />    <property name="APPNAME" value="authentication" />     <!-- 彩色日志 -->    <!-- 彩色日志依赖的渲染类 -->    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />    <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />    <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />    <!-- 彩色日志格式 -->    <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>     <!--输出到控制台-->    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">        <encoder>            <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>            <!-- 设置字符集 -->            <charset>UTF-8</charset>        </encoder>         <!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息-->        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">            <level>all</level>        </filter>    </appender>     <!--输出到文件-->    <!-- 时间滚动输出 level为 DEBUG 日志 -->    <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">        <!-- 记录的日志文件的路径及文件名 -->        <file>${LOG_HOME}/${APPNAME}/bizLog/${APPNAME}.log</file>        <!--日志文件输出格式-->        <encoder>            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>            <charset>UTF-8</charset> <!-- 设置字符集 -->        </encoder>        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">            <fileNamePattern>${LOG_HOME}/${APPNAME}/bizLog/${APPNAME}-%d{yyyy-MM-dd}.%i.log</fileNamePattern>            <!--保存时间3天-->            <cleanHistoryOnStart>true</cleanHistoryOnStart>            <MaxHistory>3</MaxHistory>            <!-- 除按日志记录之外,还配置了日志文件不能超过50M,若超过50M,日志文件会以索引0开始,  命名日志文件,例如bizlog-biz-20181219.0.log -->            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">                <maxFileSize>50MB</maxFileSize>            </timeBasedFileNamingAndTriggeringPolicy>        </rollingPolicy>        <!-- 追加方式记录日志 -->        <append>true</append>    </appender>     <appender name="LOGSTASH"              class="net.logstash.logback.appender.LogstashTcpSocketAppender">        <destination>${ES_URL:- }:${ES_PORT:- }</destination>        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">        </filter>        <!-- encoder必须配置,有多种可选 -->        <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder">            <customFields>{"appname":"carer"}</customFields>            <providers>                <!--自定义日志输出格式-->                <pattern>                    <pattern>                        {                        "project": "mall-tiny",                        "level": "%level",                        "service": "${APP_NAME:-}",                        "pid": "${PID:-}",                        "thread": "%thread",                        "class": "%logger",                        "message": "%message",                        "stack_trace": "%exception{20}"                        }                    </pattern>                </pattern>            </providers>        </encoder>        <connectionStrategy>            <roundRobin>                <connectionTTL>5 minutes</connectionTTL>            </roundRobin>        </connectionStrategy>    </appender>     <!-- 打印sql -->    <logger name="com.ibatis" level="DEBUG" />    <logger name="com.ibatis.common.jdbc.SimpleDataSource" level="DEBUG" />    <logger name="com.ibatis.common.jdbc.ScriptRunner" level="DEBUG" />    <logger name="com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate" level="DEBUG" />    <logger name="java.sql.Connection" level="DEBUG" />    <logger name="java.sql.Statement" level="DEBUG" />    <logger name="java.sql.PreparedStatement" level="DEBUG" />    <logger name="java.sql.ResultSet" level="DEBUG" />    <logger name="com.vanpeng.authentication.business.mapper" level="DEBUG" />     <root level="info">        <appender-ref ref="CONSOLE" />        <appender-ref ref="INFO_FILE" />    </root></configuration>
复制代码

以上是全部的文件,如果没有思路,可以全部复制。最主要的是以下配置。

<!--表示从bootstrap.yml中logging获取ES_URL和ES_PORT --><springProperty name="ES_URL" source="logging.es-url"/><springProperty name="ES_PORT" source="logging.es-port"/>
复制代码


<!-- 指定连接的ip与端口号--><destination>${ES_URL:- }:${ES_PORT:- }</destination>
复制代码

2.添加 bootstrap.yml

指定常量供 logback 使用。

logging:  level:    com.vanpeng: debug  config: classpath:logback.xml  es-url: 14.13.19.90  es-port: 4999
复制代码

3.注意

  1. application.yml 名一定要改成更改成 bootstrap.yml。

  2. logback 配置文件名称为 logback-spring.xml。


以上都是硬性要求,否则在启动时会报错,查找不到 bootstrap.yml 中的配置。

发布于: 3 小时前阅读数: 7
用户头像

小黄鸡1992

关注

小黄鸡加油 2021.07.13 加入

一位技术落地与应用的博主,带你从入门,了解和使用各项顶流开源项目。

评论

发布
暂无评论
logback获取bootstrap.yml配置