build: add logstash-logback dependency and update logging configuration

Add Logstash Logback dependency to enable JSON logging and update the logback.xml configuration to include a JSON encoder. Also, update the CI workflow to cache Maven packages and improve build performance by disabling transfer progress.
This commit is contained in:
pnoker
2025-04-30 16:27:02 +08:00
parent 6b439b3419
commit 8a0cc1ba1c
3 changed files with 65 additions and 3 deletions
+10 -1
View File
@@ -16,6 +16,15 @@ jobs:
distribution: liberica
java-version: 21
cache: maven
cache-dependency-path: "**/pom.xml"
- name: Cache Maven packages
uses: actions/cache@v3
with:
path: ~/.m2
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-m2-
- name: Extract Variables
id: variables
@@ -51,7 +60,7 @@ jobs:
echo "docker_registry_aliyun=registry.cn-beijing.aliyuncs.com/dc3" >> $GITHUB_OUTPUT
- name: Build with Maven
run: mvn -U -e -B clean package -DskipTests -P ${{ steps.variables.outputs.profile }}
run: mvn -U -e -B clean package -DskipTests -P ${{ steps.variables.outputs.profile }} --no-transfer-progress
- name: List Workspace
run: |
+11
View File
@@ -65,6 +65,10 @@
<developerConnection>https://github.com/pnoker/iot-dc3.git</developerConnection>
</scm>
<properties>
<logstash.logback.version>8.1</logstash.logback.version>
</properties>
<dependencies>
<!-- Spring Context -->
@@ -79,6 +83,13 @@
<artifactId>aspectjweaver</artifactId>
</dependency>
<!-- Logstash Logback -->
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>${logstash.logback.version}</version>
</dependency>
</dependencies>
</project>
@@ -22,13 +22,55 @@
value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} [%clr(%4line){magenta}] %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n%wEx"/>
<property name="FILE_LOG_PATTERN"
value="%d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${PID:- } --- [%t] [%4line] %-40.40logger{39} : %m%n%wEx"/>
<property name="LOGBACK_ROLLINGPOLICY_MAX_HISTORY" value="30"/>
<property name="LOGBACK_ROLLINGPOLICY_CLEAN_HISTORY_ON_START" value="false"/>
<property name="LOGBACK_ROLLINGPOLICY_MAX_FILE_SIZE" value="200MB"/>
<property name="LOGBACK_ROLLINGPOLICY_TOTAL_SIZE_CAP" value="20GB"/>
<property name="LOGBACK_ROLLINGPOLICY_MAX_HISTORY" value="30"/>
<!-- 引入 base.xml -->
<include resource="org/springframework/boot/logging/logback/base.xml"/>
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}/spring.log}"/>
<include resource="org/springframework/boot/logging/logback/console-appender.xml"/>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>${FILE_LOG_THRESHOLD}</level>
</filter>
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
<charset>${FILE_LOG_CHARSET}</charset>
</encoder>
<file>${LOG_FILE}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOGBACK_ROLLINGPOLICY_FILE_NAME_PATTERN:-${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz}</fileNamePattern>
<cleanHistoryOnStart>${LOGBACK_ROLLINGPOLICY_CLEAN_HISTORY_ON_START:-false}</cleanHistoryOnStart>
<maxFileSize>${LOGBACK_ROLLINGPOLICY_MAX_FILE_SIZE:-10MB}</maxFileSize>
<totalSizeCap>${LOGBACK_ROLLINGPOLICY_TOTAL_SIZE_CAP:-0}</totalSizeCap>
<maxHistory>${LOGBACK_ROLLINGPOLICY_MAX_HISTORY:-7}</maxHistory>
</rollingPolicy>
<encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
<providers>
<timestamp>
<fieldName>timestamp</fieldName>
<timeZone>Asia/Shanghai</timeZone>
</timestamp>
<version>
<fieldName>version</fieldName>
</version>
<message/>
<loggerName/>
<threadName/>
<logLevel/>
<logLevelValue/>
<mdc/>
<contextName/>
</providers>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
</root>
<!-- 关闭状态日志 -->
<statusListener class="ch.qos.logback.core.status.NopStatusListener"/>