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"> <!–按时间保存日志 修改格式可以按小时、按天、月来保存–> <fileNamePattern>${logging.path}/common-service.info.%d{yyyy-MM-dd}.log</fileNamePattern> <!–保存时长–> <MaxHistory>90</MaxHistory> <!–文件大小–> <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
既然我已经踏上这条道路,那么,任何东西都不应妨碍我沿着这条路走下去!!!!!!!!!! !!! ! !! !
个人公众号《后端技术开发之路》,欢迎您关注!
如果您觉得我写还不过,请打赏下在下吧!【高木子】!