「这是我参与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配置
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配置日志文件,可以实现微服务日志的统一配置,动态刷新。