diff --git a/.gitignore b/.gitignore index d87d478a5..43594a1d3 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,6 @@ target openisle.iml node_modules dist -open-isle.env \ No newline at end of file +open-isle.env +logs +*.log \ No newline at end of file diff --git a/README.md b/README.md index 5a40441bc..5290506ae 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,11 @@ OpenIsle 是一个使用 Spring Boot 和 Vue 3 构建的全栈开源社区平台 2. 执行 `npm install` 3. `npm run serve`可在本地启动开发服务,产品环境使用 `npm run build`生成 `dist/` 文件,配合线上网站方式部署 +### 日志 + +后端使用 Logback 按小时滚动输出日志,日志文件位于 `backend/logs/`,文件名格式为 `application-YYYY-MM-dd_HH.log.gz`,系统会自动保留最近三天的日志。 +若需要解压最近三天的日志,可在后端目录执行 `./scripts/extract_logs.sh`,脚本会将日志解压到 `scripts/extracted/` 目录或指定的目标目录。 + ## ✨ 项目特点 - JWT 认证以及 Google、GitHub、Discord、Twitter 等多种 OAuth 登录 - 支持分类、标签的贴文管理以及草稿保存功能 diff --git a/backend/scripts/extract_logs.sh b/backend/scripts/extract_logs.sh new file mode 100755 index 000000000..09e0d762e --- /dev/null +++ b/backend/scripts/extract_logs.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash +# Extract gzipped logs from the last three days into a target directory. +# Usage: ./extract_logs.sh [output_dir] +set -e +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +LOG_DIR="${SCRIPT_DIR}/../logs" +OUTPUT_DIR="${1:-${SCRIPT_DIR}/extracted}" + +mkdir -p "$OUTPUT_DIR" +find "$LOG_DIR" -name 'application-*.log.gz' -mtime -3 -print \ + -exec sh -c 'gzip -dc "$1" > "$2/$(basename "$1" .gz)"' _ {} "$OUTPUT_DIR" \; +echo "Logs extracted to $OUTPUT_DIR" diff --git a/backend/src/main/resources/logback-spring.xml b/backend/src/main/resources/logback-spring.xml new file mode 100644 index 000000000..0e2a3c374 --- /dev/null +++ b/backend/src/main/resources/logback-spring.xml @@ -0,0 +1,25 @@ + + + + + + %d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n + + + + + ${LOG_PATH}/application.log + + ${LOG_PATH}/application-%d{yyyy-MM-dd_HH}.log.gz + 72 + + + %d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n + + + + + + + +