drone-service/drone-gd/Dockerfile
New file @@ -0,0 +1,11 @@ FROM 172.21.81.239:32002/openjdk/openjdk:11 MAINTAINER 646384940@qq.com #启动自行加载 RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone COPY target/drone-gd.jar /drone-gd.jar EXPOSE 8106 ENTRYPOINT ["/bin/sh","-c","java -Dfile.encoding=utf8 -Djava.security.egd=file:/dev/./urandom -jar -Xms1024m -Xmx1024m /drone-gd.jar"] drone-service/drone-gd/docker-compose-prod.yml
New file @@ -0,0 +1,26 @@ version: '3.1' services: drone_system: # 从 Harbor 私有仓库拉取镜像 image: 172.21.81.239:32002/drone-manage/drone-gd:SNAPSHOT-$BUILD_NUMBER # image: drone-system:latest container_name: drone-system # 宿主机端口:容器启动端口 ports: - "8106:8106" volumes: - /app/logs/gd:/data/log/gd - /software/service/liscense:/software/service/liscense # 设置环境变量 environment: - SPRING_PROFILES_ACTIVE=prod # 容器停止后会重启 restart: always # 设置一致的 network,各微服务中需要配置一致的,方便相互访问 networks: - doc_drone_network # 指定 networks: doc_drone_network: external: true drone-service/drone-gd/docker-compose-test.yml
New file @@ -0,0 +1,26 @@ version: '3.1' services: drone_system: # 从 Harbor 私有仓库拉取镜像 image: 172.21.81.239:32002/drone-manage-test/drone-gd:SNAPSHOT-$BUILD_NUMBER # image: drone-system:latest container_name: drone-system # 宿主机端口:容器启动端口 ports: - "8106:8106" volumes: - /data/log/gd:/data/log/gd - /software/service/liscense:/software/service/liscense # 设置环境变量 environment: - SPRING_PROFILES_ACTIVE=test # 容器停止后会重启 restart: always # 设置一致的 network,各微服务中需要配置一致的,方便相互访问 networks: - doc_drone_network # 指定 networks: doc_drone_network: external: true drone-service/drone-gd/pom.xml
New file @@ -0,0 +1,55 @@ <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>drone-service</artifactId> <groupId>org.springblade</groupId> <version>${revision}</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>drone-gd</artifactId> <name>${project.artifactId}</name> <packaging>jar</packaging> <dependencies> <dependency> <groupId>org.springblade</groupId> <artifactId>blade-core-boot</artifactId> </dependency> <dependency> <groupId>org.springblade</groupId> <artifactId>blade-core-auto</artifactId> </dependency> <dependency> <groupId>org.springblade</groupId> <artifactId>blade-starter-excel</artifactId> </dependency> <dependency> <groupId>org.springblade</groupId> <artifactId>blade-starter-swagger</artifactId> </dependency> <dependency> <groupId>org.springblade</groupId> <artifactId>drone-system-api</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>io.fabric8</groupId> <artifactId>docker-maven-plugin</artifactId> <configuration> <skip>${docker.fabric.skip}</skip> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> </plugin> </plugins> </build> </project> drone-service/drone-gd/src/main/java/README.md
New file @@ -0,0 +1,6 @@ 说明: xxx: xx管理 xx: xx x:xx xxxx:xxxx xxx:xxx drone-service/drone-gd/src/main/java/org/sxkj/gd/GdApplication.java
New file @@ -0,0 +1,38 @@ /* * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the dreamlu.net developer nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * Author: Chill 庄骞 (smallchill@163.com) */ package org.sxkj.gd; import org.mybatis.spring.annotation.MapperScan; import org.springblade.core.cloud.client.BladeCloudApplication; import org.springblade.core.launch.BladeApplication; import org.springframework.cloud.openfeign.EnableFeignClients; /** * 系统模块启动器 * @author Chill */ @BladeCloudApplication @EnableFeignClients({"org.sxkj","org.springblade","com.dji.sample"}) @MapperScan({"org.springblade.**.mapper.**","org.sxkj.**.mapper.**"}) public class GdApplication { public static void main(String[] args) { BladeApplication.run("drone-gd", GdApplication.class, args); } } drone-service/drone-gd/src/main/resources/application-dev.yml
New file @@ -0,0 +1,12 @@ #服务器端口 server: port: 8102 #数据源配置 spring: datasource: url: ${blade.datasource.dev.url} username: ${blade.datasource.dev.username} password: ${blade.datasource.dev.password} ###激活码 licensePath : C:\Users\Administrator\Downloads\License.lic drone-service/drone-gd/src/main/resources/application-prod.yml
New file @@ -0,0 +1,15 @@ #服务器端口 server: port: 8102 #数据源配置 spring: datasource: url: ${blade.datasource.prod.url} username: ${blade.datasource.prod.username} password: ${blade.datasource.prod.password} ###license文件路径 licensePath : /software/service/liscense/License.lic drone-service/drone-gd/src/main/resources/application-test.yml
New file @@ -0,0 +1,15 @@ #服务器端口 server: port: 8102 #数据源配置 spring: datasource: url: ${blade.datasource.test.url} username: ${blade.datasource.test.username} password: ${blade.datasource.test.password} ###license文件路径 licensePath : /software/service/liscense/License.lic drone-service/drone-gd/src/main/resources/log/logback-dev.xml
New file @@ -0,0 +1,113 @@ <?xml version="1.0" encoding="UTF-8"?> <configuration scan="false" debug="false"> <!-- 自定义参数监听 --> <contextListener class="org.springblade.core.log.listener.LoggerStartupListener"/> <springProperty scope="context" name="springAppName" source="spring.application.name"/> <!-- 彩色日志依赖的渲染类 --> <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="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>${CONSOLE_LOG_PATTERN}</pattern> <charset>utf8</charset> </encoder> </appender> <if condition='property("ELK_MODE").toUpperCase().contains("TRUE")'> <then> <!-- 推送日志至elk --> <appender name="STDOUT_LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender"> <destination>${DESTINATION}</destination> <!-- 日志输出编码 --> <encoder charset="UTF-8" class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder"> <providers> <timestamp> <timeZone>UTC</timeZone> </timestamp> <pattern> <pattern> { "traceId": "%X{traceId}", "requestId": "%X{requestId}", "accountId": "%X{accountId}", "tenantId": "%X{tenantId}", "logLevel": "%level", "serviceName": "${springAppName:-SpringApp}", "pid": "${PID:-}", "thread": "%thread", "class": "%logger{40}", "line":"%L", "message": "%message" } </pattern> </pattern> <mdc/> <stackTrace/> </providers> </encoder> </appender> </then> </if> <!-- 日志输出级别 --> <root level="INFO"> <appender-ref ref="STDOUT"/> <appender-ref ref="${STDOUT_APPENDER}"/> </root> <logger name="net.sf.ehcache" level="INFO"/> <logger name="druid.sql" level="INFO"/> <!-- MyBatis log configure --> <logger name="com.apache.ibatis" level="INFO"/> <logger name="org.mybatis.spring" level="INFO"/> <logger name="java.sql.Connection" level="INFO"/> <logger name="java.sql.Statement" level="INFO"/> <logger name="java.sql.PreparedStatement" level="INFO"/> <!-- 减少部分debug日志 --> <logger name="druid.sql" level="INFO"/> <logger name="org.apache.shiro" level="INFO"/> <logger name="org.mybatis.spring" level="INFO"/> <logger name="org.springframework" level="INFO"/> <logger name="org.springframework.context" level="WARN"/> <logger name="org.springframework.beans" level="WARN"/> <logger name="com.baomidou.mybatisplus" level="INFO"/> <logger name="org.apache.ibatis.io" level="INFO"/> <logger name="org.apache.velocity" level="INFO"/> <logger name="org.eclipse.jetty" level="INFO"/> <logger name="io.undertow" level="INFO"/> <logger name="org.xnio.nio" level="INFO"/> <logger name="org.thymeleaf" level="INFO"/> <logger name="springfox.documentation" level="INFO"/> <logger name="org.hibernate.validator" level="INFO"/> <logger name="com.netflix.loadbalancer" level="INFO"/> <logger name="com.netflix.hystrix" level="INFO"/> <logger name="com.netflix.zuul" level="INFO"/> <logger name="de.codecentric" level="INFO"/> <!-- cache INFO --> <logger name="net.sf.ehcache" level="INFO"/> <logger name="org.springframework.cache" level="INFO"/> <!-- cloud --> <logger name="org.apache.http" level="INFO"/> <logger name="com.netflix.discovery" level="INFO"/> <logger name="com.netflix.eureka" level="INFO"/> <!-- 业务日志 --> <Logger name="org.springblade" level="INFO"/> <Logger name="org.springblade.core.tenant" level="INFO"/> <Logger name="org.springblade.core.version" level="INFO"/> <!-- 减少nacos日志 --> <logger name="com.alibaba.nacos" level="ERROR"/> </configuration> drone-service/drone-gd/src/main/resources/log/logback-prod.xml
New file @@ -0,0 +1,221 @@ <?xml version="1.0" encoding="UTF-8"?> <configuration scan="false" debug="false"> <!-- 自定义参数监听 --> <contextListener class="org.springblade.core.log.listener.LoggerStartupListener"/> <springProperty scope="context" name="springAppName" source="spring.application.name"/> <!-- 彩色日志依赖的渲染类 --> <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="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>${CONSOLE_LOG_PATTERN}</pattern> <charset>utf8</charset> </encoder> <!-- 打印日志级别 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>WARN</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 生成日志文件 DEBUG --> <appender name="DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <!-- 日志文件输出的文件名 --> <FileNamePattern>/data/log/system/debug/%d{yyyy-MM-dd}/debug-%d{yyyy-MM-dd}.%i.log</FileNamePattern> <!--最多保留30天--> <maxHistory>7</maxHistory> <!-- 每个日志文件到100mb的时候开始切分,最多保留7天,但最大到20GB,哪怕没到7天也要删除多余的日志 --> <totalSizeCap>1GB</totalSizeCap> <!-- maxFileSize:这是活动文件的大小,默认值是100MB--> <maxFileSize>100MB</maxFileSize> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%n%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%X{traceId}] [%logger{50}] %n%-5level: %msg%n</pattern> </encoder> <!-- 打印日志级别 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>DEBUG</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 生成日志文件 INFO --> <appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <!-- 日志文件输出的文件名 --> <FileNamePattern>/data/log/system/info/%d{yyyy-MM-dd}/info-%d{yyyy-MM-dd}.%i.log</FileNamePattern> <!--最多保留30天--> <maxHistory>7</maxHistory> <!-- 每个日志文件到30mb的时候开始切分,最多保留7天,但最大到3GB,哪怕没到7天也要删除多余的日志 --> <totalSizeCap>1GB</totalSizeCap> <!-- maxFileSize:这是活动文件的大小,默认值是100MB--> <maxFileSize>30MB</maxFileSize> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%n%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%X{traceId}] [%logger{50}] %n%-5level: %msg%n</pattern> </encoder> <!-- 打印日志级别 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>INFO</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 生成日志文件 warn 级别 --> <appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <!-- 日志文件输出的文件名 --> <FileNamePattern>/data/log/system/warn/%d{yyyy-MM-dd}/warn-%d{yyyy-MM-dd}.%i.log</FileNamePattern> <!--最多保留30天--> <maxHistory>30</maxHistory> <!-- 每个日志文件到10mb的时候开始切分,最多保留30天,但最大到1GB,哪怕没到30天也要删除多余的日志 --> <totalSizeCap>1GB</totalSizeCap> <!-- maxFileSize:这是活动文件的大小,默认值是10MB,测试时可改成5KB看效果 --> <maxFileSize>10MB</maxFileSize> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%n%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%X{traceId}] [%logger{50}] %n%-5level: %msg%n</pattern> </encoder> <!-- 打印日志级别 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>WARN</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 生成日志文件 --> <appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <!-- 日志文件输出的文件名 --> <FileNamePattern>/data/log/system/error/%d{yyyy-MM-dd}/error-%d{yyyy-MM-dd}.%i.log</FileNamePattern> <!--最多保留30天--> <maxHistory>30</maxHistory> <!-- 每个日志文件到10mb的时候开始切分,最多保留30天,但最大到1GB,哪怕没到30天也要删除多余的日志 --> <totalSizeCap>1GB</totalSizeCap> <!-- maxFileSize:这是活动文件的大小,默认值是10MB,测试时可改成5KB看效果 --> <maxFileSize>10MB</maxFileSize> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%n%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%X{traceId}] [%logger{50}] %n%-5level: %msg%n</pattern> </encoder> <!-- 打印日志级别 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>ERROR</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <if condition='property("ELK_MODE").toUpperCase().contains("TRUE")'> <then> <!-- 推送日志至elk --> <appender name="INFO_LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender"> <destination>${DESTINATION}</destination> <!-- 日志输出编码 --> <encoder charset="UTF-8" class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder"> <providers> <timestamp> <timeZone>UTC</timeZone> </timestamp> <pattern> <pattern> { "traceId": "%X{traceId}", "requestId": "%X{requestId}", "accountId": "%X{accountId}", "tenantId": "%X{tenantId}", "logLevel": "%level", "serviceName": "${springAppName:-SpringApp}", "pid": "${PID:-}", "thread": "%thread", "class": "%logger{40}", "line":"%L", "message": "%message" } </pattern> </pattern> <mdc/> <stackTrace/> </providers> </encoder> <!-- 打印日志级别 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>INFO</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 推送日志至elk --> <appender name="ERROR_LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender"> <destination>${DESTINATION}</destination> <!-- 日志输出编码 --> <encoder charset="UTF-8" class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder"> <providers> <timestamp> <timeZone>UTC</timeZone> </timestamp> <pattern> <pattern> { "traceId": "%X{traceId}", "requestId": "%X{requestId}", "accountId": "%X{accountId}", "tenantId": "%X{tenantId}", "logLevel": "%level", "serviceName": "${springAppName:-SpringApp}", "pid": "${PID:-}", "thread": "%thread", "class": "%logger{40}", "line":"%L", "message": "%message" } </pattern> </pattern> <mdc/> <stackTrace/> </providers> </encoder> <!-- 打印日志级别 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>ERROR</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> </then> </if> <!-- 日志输出级别 --> <root level="INFO"> <appender-ref ref="STDOUT"/> <appender-ref ref="${INFO_APPENDER}"/> <appender-ref ref="${ERROR_APPENDER}"/> </root> <logger name="net.sf.ehcache" level="INFO"/> <logger name="druid.sql" level="INFO"/> <!-- 减少nacos日志 --> <logger name="com.alibaba.nacos" level="ERROR"/> <logger name="com.dji.sample" level="DEBUG"> <appender-ref ref="ERROR"/> <appender-ref ref="INFO"/> <appender-ref ref="DEBUG"/> </logger> </configuration> drone-service/drone-gd/src/main/resources/log/logback-test.xml
New file @@ -0,0 +1,221 @@ <?xml version="1.0" encoding="UTF-8"?> <configuration scan="false" debug="false"> <!-- 自定义参数监听 --> <contextListener class="org.springblade.core.log.listener.LoggerStartupListener"/> <springProperty scope="context" name="springAppName" source="spring.application.name"/> <!-- 彩色日志依赖的渲染类 --> <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="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>${CONSOLE_LOG_PATTERN}</pattern> <charset>utf8</charset> </encoder> <!-- 打印日志级别 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>WARN</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 生成日志文件 DEBUG --> <appender name="DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <!-- 日志文件输出的文件名 --> <FileNamePattern>/data/logs/system/debug/%d{yyyy-MM-dd}/debug-%d{yyyy-MM-dd}.%i.log</FileNamePattern> <!--最多保留30天--> <maxHistory>7</maxHistory> <!-- 每个日志文件到100mb的时候开始切分,最多保留7天,但最大到20GB,哪怕没到7天也要删除多余的日志 --> <totalSizeCap>1GB</totalSizeCap> <!-- maxFileSize:这是活动文件的大小,默认值是100MB--> <maxFileSize>100MB</maxFileSize> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%n%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%X{traceId}] [%logger{50}] %n%-5level: %msg%n</pattern> </encoder> <!-- 打印日志级别 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>DEBUG</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 生成日志文件 INFO --> <appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <!-- 日志文件输出的文件名 --> <FileNamePattern>/data/logs/system/info/%d{yyyy-MM-dd}/info-%d{yyyy-MM-dd}.%i.log</FileNamePattern> <!--最多保留30天--> <maxHistory>7</maxHistory> <!-- 每个日志文件到30mb的时候开始切分,最多保留7天,但最大到3GB,哪怕没到7天也要删除多余的日志 --> <totalSizeCap>1GB</totalSizeCap> <!-- maxFileSize:这是活动文件的大小,默认值是100MB--> <maxFileSize>30MB</maxFileSize> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%n%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%X{traceId}] [%logger{50}] %n%-5level: %msg%n</pattern> </encoder> <!-- 打印日志级别 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>INFO</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 生成日志文件 warn 级别 --> <appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <!-- 日志文件输出的文件名 --> <FileNamePattern>/data/logs/system/warn/%d{yyyy-MM-dd}/warn-%d{yyyy-MM-dd}.%i.log</FileNamePattern> <!--最多保留30天--> <maxHistory>30</maxHistory> <!-- 每个日志文件到10mb的时候开始切分,最多保留30天,但最大到1GB,哪怕没到30天也要删除多余的日志 --> <totalSizeCap>1GB</totalSizeCap> <!-- maxFileSize:这是活动文件的大小,默认值是10MB,测试时可改成5KB看效果 --> <maxFileSize>10MB</maxFileSize> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%n%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%X{traceId}] [%logger{50}] %n%-5level: %msg%n</pattern> </encoder> <!-- 打印日志级别 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>WARN</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 生成日志文件 --> <appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <!-- 日志文件输出的文件名 --> <FileNamePattern>/data/logs/system/error/%d{yyyy-MM-dd}/error-%d{yyyy-MM-dd}.%i.log</FileNamePattern> <!--最多保留30天--> <maxHistory>30</maxHistory> <!-- 每个日志文件到10mb的时候开始切分,最多保留30天,但最大到1GB,哪怕没到30天也要删除多余的日志 --> <totalSizeCap>1GB</totalSizeCap> <!-- maxFileSize:这是活动文件的大小,默认值是10MB,测试时可改成5KB看效果 --> <maxFileSize>10MB</maxFileSize> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%n%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%X{traceId}] [%logger{50}] %n%-5level: %msg%n</pattern> </encoder> <!-- 打印日志级别 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>ERROR</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <if condition='property("ELK_MODE").toUpperCase().contains("TRUE")'> <then> <!-- 推送日志至elk --> <appender name="INFO_LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender"> <destination>${DESTINATION}</destination> <!-- 日志输出编码 --> <encoder charset="UTF-8" class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder"> <providers> <timestamp> <timeZone>UTC</timeZone> </timestamp> <pattern> <pattern> { "traceId": "%X{traceId}", "requestId": "%X{requestId}", "accountId": "%X{accountId}", "tenantId": "%X{tenantId}", "logLevel": "%level", "serviceName": "${springAppName:-SpringApp}", "pid": "${PID:-}", "thread": "%thread", "class": "%logger{40}", "line":"%L", "message": "%message" } </pattern> </pattern> <mdc/> <stackTrace/> </providers> </encoder> <!-- 打印日志级别 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>INFO</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 推送日志至elk --> <appender name="ERROR_LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender"> <destination>${DESTINATION}</destination> <!-- 日志输出编码 --> <encoder charset="UTF-8" class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder"> <providers> <timestamp> <timeZone>UTC</timeZone> </timestamp> <pattern> <pattern> { "traceId": "%X{traceId}", "requestId": "%X{requestId}", "accountId": "%X{accountId}", "tenantId": "%X{tenantId}", "logLevel": "%level", "serviceName": "${springAppName:-SpringApp}", "pid": "${PID:-}", "thread": "%thread", "class": "%logger{40}", "line":"%L", "message": "%message" } </pattern> </pattern> <mdc/> <stackTrace/> </providers> </encoder> <!-- 打印日志级别 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>ERROR</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> </then> </if> <!-- 日志输出级别 --> <root level="INFO"> <appender-ref ref="STDOUT"/> <appender-ref ref="${INFO_APPENDER}"/> <appender-ref ref="${ERROR_APPENDER}"/> </root> <logger name="net.sf.ehcache" level="INFO"/> <logger name="druid.sql" level="INFO"/> <!-- 减少nacos日志 --> <logger name="com.alibaba.nacos" level="ERROR"/> <logger name="com.dji.sample" level="DEBUG"> <appender-ref ref="ERROR"/> <appender-ref ref="INFO"/> <appender-ref ref="DEBUG"/> </logger> </configuration> drone-service/pom.xml
@@ -18,6 +18,7 @@ <modules> <module>drone-fw</module> <module>drone-gd</module> <module>drone-system</module> </modules>