微服务统一配置日志

498 阅读1分钟

「这是我参与2022首次更文挑战的第4天,活动详情查看:2022首次更文挑战

微服务统一配置日志

将logback-spring.xml放在nacos配置中心实现微服务日志统一配置管理,

项目依赖

<dependencies>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
  </dependency>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
  </dependency>
  <dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
  </dependency>
  <dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
  </dependency>
  <dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
  </dependency>

  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
  </dependency>

  <!-- 日志同步至kafka -->
  <dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka-clients</artifactId>
    <version>2.8.0</version>
  </dependency>
  <dependency>
    <groupId>net.logstash.logback</groupId>
    <artifactId>logstash-logback-encoder</artifactId>
    <version>4.11</version>
  </dependency>
  <dependency>
    <groupId>com.github.danielwegener</groupId>
    <artifactId>logback-kafka-appender</artifactId>
    <version>0.1.0</version>
    <scope>runtime</scope>
  </dependency>

  <dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-registry-prometheus</artifactId>
  </dependency>

  <dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
  </dependency>

  <dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
  </dependency>


</dependencies>

启动类注解

@EnableScheduling
@EnableDiscoveryClient
@SpringBootApplication
public class LogbackNacosApplication {

  public static void main (String[] args) {
    SpringApplication.run(LogbackNacosApplication.class,args);
  }
}

实现一个日志定时任务

@Service
@Slf4j
public class LogScheduling {


  @Scheduled(cron="0/1 * * * * ? ")
  public void logTask(){
    log.debug("log debug {}",DateUtil.now());
    log.info(" log  info {}", DateUtil.now());
    log.error("log error {}",DateUtil.now());
  }

}
server:
  port: 8080

spring:
  profiles:
    active: dev
  application:
    name: paw-logback-nacos
  #cloud
  cloud:
    nacos:
      config:
        server-addr: localhost:8848
        file-extension: yaml
        name: paw-logback-nacos #需要修改为实际nacos name
        namespace: ${spring.profiles.active}
        #        username: nacos  #用户名
        #        password: 80VGRxh*  #密码
        contextPath: nacos #启用登陆功能时使用
      discovery:
        server-addr: localhost:8848
        namespace: ${spring.profiles.active}
        service: ${spring.application.name}
  #        username: nacos  #用户名
  #        password: 80VGRxh*  #密码

nacos配置

image.png

paw-logback-nacos.yaml配置文件 logging.config 指定了配置文件位置 nacos地址

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.paw.logback.nacos: debug
```ymal

logback-spring.xml 日常的配置文件

kafka-log-test

%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n ${logDir}/${logName}.log ${logDir}/history/${myspringboottest_log}.%d{yyyy-MM-dd}.rar 30 %d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n false true {"appName":"${applicationName}","env":"${profileActive}"} UTF-8 logger-channel bootstrap.servers=localhost:9092 true true 0 2048 ```xml

注意

单独修改logback-spring.xml不会触发配置刷新,需要修改paw-logback-nacos.yaml刷新项目配置。

通过nacos配置日志文件,可以实现微服务日志的统一配置,动态刷新。