zoukankan      html  css  js  c++  java
  • nacos动态读取 logback-spring.xml日志配置

    一。nacos的使用

    启动nacos服务端,可以下载jar启动或者自己下载源码打包。浏览器访问http://10.121.9.30:8848/nacos,账号密码:nacos/nacos

    nacos远程的common-service-dev.yml文件

    spring:
      application:
        name: common-service
      datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://xxxxxx:3306/smartpower_xny?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=UTC 
        username: xxx
        password: xx@123456
        type: com.zaxxer.hikari.HikariDataSource
        hikari:
          minimum-idle: 5
          maximum-pool-size: 15
          auto-commit: true
          idle-timeout: 30000
          pool-name: SmartpowerHikariCP
          max-lifetime: 1800000
          connection-timeout: 30000
          connection-test-query: SELECT 1
    
      redis:
        host: xxxx
        port: 6379
        database: 0
        timeout: 1800000
      # jpa:
        # show-sql: false
        # hibernate:
          # ddl-auto: update
        # database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
        # database: mysql
    
    
    server:
      port: 9002
      servlet:
        context-path: /
    
    management:
      endpoints:
        web:
          exposure:
            include: "*"
    
    logging:
      #file:
      #  name: logs/${spring.application.name}.log
      config: http://${spring.cloud.nacos.config.server-addr}/nacos/v1/cs/configs?group=DEFAULT_GROUP&tenant=${spring.cloud.nacos.config.namespace}&dataId=logback-spring.xml
      level:
        com.chint.smartpower.common.repository.dao: debug
    
    
    mybatis-plus:
      mapper-locations: classpath*:/mapper/*.xml
      #实体扫描,多个package用逗号或者分号分隔
      typeAliasesPackage: com.chint.smartpower.common.repository.model
      configuration:
        #是否开启自动驼峰命名规则
        map-underscore-to-camel-case: true
        #MyBatis 自动映射策略,通过该配置可指定 MyBatis 是否并且如何来自动映射数据表字段与对象的属性,
        auto-mapping-behavior: full
        #打印SQL
        #log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
      global-config:
        #数据库配置
        db-config:
          #主键   auto:自增
          id-type: auto
    
    #枚举类型当作基础类型
    mapper:
      enumAsSimpleType: true
    
    pagehelper:
      helper-dialect: mysql
      #true时,如果pageNum<1会查询第一页,如果pageNum>pages会查询最后一页
      #false时,如果pageNum<1或pageNum>pages会返回空数据
      reasonable: false
      support-methods-arguments: true
      params: count=countsql
    
    chint:
      swagger:
        enabled: true
        title: common中心
        description: common接口文档
        version: 1.0
        base-package: com.chint.smartpower.common.controller

            nacos远程的 logback-spring.xml文件

    <?xml version="1.0" encoding="UTF-8" ?>
    <configuration>
    
        <!-- 在yaml配置添加logging.path: 配置文件路径-->
    
        <!-- 属性文件:在properties文件中找到对应的配置项 -->
        <springProperty scope="context" name="logging.path" source="logging.path" defaultValue="./logs" />
        <!-- nacos名字不要改动,不然会造成启动报警告,Failed to rename context Context has been already given a name nacos
        原因:项目框架 集成logback 与nacos 自带的logback 冲突, nacos的logback 已经先于 项目启动-->
        <contextName>nacos</contextName>
        <property name="FILE_NAME" value="common-data" />
        <appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
            <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                <!--格式化输出(配色):%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
                <pattern>%yellow(%d{yyyy-MM-dd HH:mm:ss}) %red([%thread]) %highlight(%-5level) %cyan(%logger{50}) - %magenta(%msg) %n</pattern>
                <!--user:%X{userId}   :添加用户信息,方便链路追踪     可以在aop拦截时MDC.put("userId", 1);-->
                <!--<pattern>%yellow(%d{yyyy-MM-dd HH:mm:ss}) %red([%thread]) %highlight(%-5level)  user:%X{userId} %cyan(%logger{50}) - %magenta(%msg) %n</pattern>-->
                <charset>UTF-8</charset>
            </encoder>
        </appender>
    
        <!--根据日志级别分离日志,分别输出到不同的文件-->
        <appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <!-- 设置拦截的对象为INFO级别日志 -->
                <level>INFO</level>
                <!-- 当匹配到了INFO级别时,启用该段配置 -->
                <onMatch>ACCEPT</onMatch>
                <!-- 没有匹配到INFO级别日志时,屏蔽该段配置 -->
                <onMismatch>DENY</onMismatch>
            </filter>
            <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                <pattern> %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50} - %msg%n </pattern>
                <!--user:%X{userId}   :添加用户信息,方便链路追踪     可以在aop拦截时MDC.put("userId", 1);-->
                <!--<pattern> %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level user:%X{userId} %logger{50} - %msg%n </pattern>-->
                <charset>UTF-8</charset>
            </encoder>
            <!--滚动策略-->
            <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
                <!--按时间保存日志 修改格式可以按小时、按天、月来保存-->
                <fileNamePattern>${logging.path}/${FILE_NAME}.info.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
                <!--单个文件大小 注意:除了 %d 之外还有 %i。这两个占位符都是强制要求的。在当前时间还没有到达周期轮转之前,日志文件达到了 maxFileSize 指定的大小,会进行归档,递增索引从 0 开始-->
                <maxFileSize>10MB</maxFileSize>
                <!--保存时长-->
                <MaxHistory>90</MaxHistory>
                <!--总文件大小,使用此属性必须配置MaxHistory,且MaxHistory第一优先级,totalSizeCap第二优先级-->
                <totalSizeCap>1GB</totalSizeCap>
            </rollingPolicy>
            <!--<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                &lt;!&ndash;按时间保存日志 修改格式可以按小时、按天、月来保存&ndash;&gt;
                <fileNamePattern>${logging.path}/common-service.info.%d{yyyy-MM-dd}.log</fileNamePattern>
                &lt;!&ndash;保存时长&ndash;&gt;
                <MaxHistory>90</MaxHistory>
                &lt;!&ndash;文件大小&ndash;&gt;
                <totalSizeCap>1GB</totalSizeCap>
            </rollingPolicy>-->
        </appender>
    
        <appender name="fileWarnLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <!-- 设置拦截的对象为INFO级别日志 -->
                <level>WARN</level>
                <!-- 当匹配到了WARN级别时,启用该段配置 -->
                <onMatch>ACCEPT</onMatch>
                <!-- 没有匹配到WARN级别日志时,屏蔽该段配置 -->
                <onMismatch>DENY</onMismatch>
            </filter>
            <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                <pattern>
                    %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50} - %msg%n
                </pattern>
                <charset>UTF-8</charset>
            </encoder>
            <!--滚动策略-->
            <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
                <!--按时间保存日志 修改格式可以按小时、按天、月来保存-->
                <fileNamePattern>${logging.path}/${FILE_NAME}.warn.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
                <!--单个文件大小 注意:除了 %d 之外还有 %i。这两个占位符都是强制要求的。在当前时间还没有到达周期轮转之前,日志文件达到了 maxFileSize 指定的大小,会进行归档,递增索引从 0 开始-->
                <maxFileSize>10MB</maxFileSize>
                <!--保存时长-->
                <MaxHistory>90</MaxHistory>
                <!--总文件大小,使用此属性必须配置MaxHistory,且MaxHistory第一优先级,totalSizeCap第二优先级-->
                <totalSizeCap>1GB</totalSizeCap>
            </rollingPolicy>
        </appender>
    
        <appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <!-- 基于给定的临界值来过滤事件。如果事件的级别等于或高于给定的临界值,将抛弃 -->
            <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
                <level>ERROR</level>
            </filter>
            <encoder>
                <pattern>
                    %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50} - %msg%n
                </pattern>
                <charset>UTF-8</charset>
            </encoder>
            <!--滚动策略-->
            <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
                <!--路径-->
                <fileNamePattern>${logging.path}/${FILE_NAME}.error.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
                <!--单个文件大小 注意:除了 %d 之外还有 %i。这两个占位符都是强制要求的。在当前时间还没有到达周期轮转之前,日志文件达到了 maxFileSize 指定的大小,会进行归档,递增索引从 0 开始-->
                <maxFileSize>10MB</maxFileSize>
                <!--保存时长-->
                <MaxHistory>90</MaxHistory>
                <!--总文件大小,使用此属性必须配置MaxHistory,且MaxHistory第一优先级,totalSizeCap第二优先级-->
                <totalSizeCap>1GB</totalSizeCap>
            </rollingPolicy>
        </appender>
    
        <!--过滤器的配置在配置级别的基础上过滤,即root标签的配置级别。本例中,是对大于等于info级别的日志过滤-->
        <root level="info">
            <appender-ref ref="consoleLog"/>
            <appender-ref ref="fileInfoLog"/>
            <appender-ref ref="fileWarnLog"/>
            <appender-ref ref="fileErrorLog"/>
        </root>
    </configuration>

       

            本地项目中的bootstrap.yaml文件

    server:
      port: 9002
    
    spring:
      application:
        name: common-service
    
      main:
        allow-bean-definition-overriding: true #当遇到同样名字的时候,是否允许覆盖注册
    
      cloud:
        nacos:
          discovery:
            server-addr: ${NACOS_HOST:10.121.9.30}:${NACOS_PORT:8848}
            group: DEV_GROUP
            namespace: ac38fa10-529c-43fc-967e-9e44860e19ba
          config:
            server-addr: ${NACOS_HOST:10.121.9.30}:${NACOS_PORT:8848}
            namespace: ac38fa10-529c-43fc-967e-9e44860e19ba
            group: DEV_GROUP
            file-extension: yml
            prefix: ${spring.application.name}
    #多个配置文件可以用以下方式
    #        ext-config[0]:
    #          group: DEV_GROUP
    #          data-id: logback-spring.xml
    #          refresh: true
    #        ext-config[1]:
    #          group: DEV_GROUP
    #          data-id: ${spring.application.name}-dev.yml
    #          refresh: true
    
      profiles:
        active: dev
    既然我已经踏上这条道路,那么,任何东西都不应妨碍我沿着这条路走下去!!!!!!!!!! !!! ! !! ! 个人公众号《后端技术开发之路》,欢迎您关注!

    如果您觉得我写还不过,请打赏下在下吧!【高木子】!

  • 相关阅读:
    kafka概述
    Spark网络通信分析
    spark序列化及MapOutputTracker解析
    spark checkpoint详解
    深入理解spark streaming
    spark Listener和metrics实现分析
    Spark SQL catalyst概述和SQL Parser的具体实现
    spark block读写流程分析
    java 分布式实践
    单元测试ppt
  • 原文地址:https://www.cnblogs.com/gaomanito/p/14755232.html
Copyright © 2011-2022 走看看