diff --git a/scripts/env.properties b/scripts/env.properties index a1cee8a..832bbc1 100644 --- a/scripts/env.properties +++ b/scripts/env.properties @@ -53,8 +53,8 @@ COS_BUCKET_HOST=https://test-1308258046.cos.ap-beijing.myqcloud.com COS_REGION=ap-beijing # ==================== 日志配置 ==================== -# 日志路径(扁平目录结构,无子目录) -LOG_PATH=./logs +# 日志路径(默认:/datacfs/applogs/服务名) +LOG_PATH=/datacfs/applogs/worklog-api # 日志级别 LOG_LEVEL_ROOT=INFO diff --git a/scripts/start.sh b/scripts/start.sh index 2ac49a6..4a49bd5 100755 --- a/scripts/start.sh +++ b/scripts/start.sh @@ -3,11 +3,9 @@ # 工作日志服务平台 - 应用启动脚本 # ==================================================== -# 应用配置 -APP_NAME="worklog-api" -APP_JAR="worklog-api-1.0.0.jar" -APP_HOME="/opt/worklog/${APP_NAME}" -APP_JAR_PATH="${APP_HOME}/lib/${APP_JAR}" +# 获取脚本所在目录的上级目录作为应用根目录 +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +APP_HOME="$(cd "${SCRIPT_DIR}/.." && pwd)" # Classpath 配置(lib 目录下所有 JAR + conf 目录) CLASSPATH="${APP_HOME}/lib/*:${APP_HOME}/conf" @@ -40,6 +38,9 @@ load_properties "${APP_HOME}/conf/env.properties" # 2. 加载服务个性化配置(覆盖同名参数) load_properties "${APP_HOME}/conf/service.properties" +# 服务名称(从 service.properties 读取,默认值) +APP_NAME=${APP_NAME:-worklog-api} + # 主启动类(从 service.properties 读取,默认值) MAIN_CLASS=${MAIN_CLASS:-com.wjbl.worklog.WorklogApplication} @@ -51,19 +52,15 @@ JVM_MAX_METASPACE_SIZE=${JVM_MAX_METASPACE_SIZE:-256m} JVM_GC_TYPE=${JVM_GC_TYPE:-G1GC} JVM_MAX_GC_PAUSE_MILLIS=${JVM_MAX_GC_PAUSE_MILLIS:-200} +# 日志目录(从 env.properties 读取,默认值) +LOG_DIR=${LOG_PATH:-/datacfs/applogs/${APP_NAME}} +STDOUT_LOG="${LOG_DIR}/stdout.log" +PID_FILE="${APP_HOME}/${APP_NAME}.pid" + JVM_OPTS="-Xms${JVM_XMS} -Xmx${JVM_XMX} -XX:MetaspaceSize=${JVM_METASPACE_SIZE} -XX:MaxMetaspaceSize=${JVM_MAX_METASPACE_SIZE}" JVM_OPTS="${JVM_OPTS} -XX:+Use${JVM_GC_TYPE} -XX:MaxGCPauseMillis=${JVM_MAX_GC_PAUSE_MILLIS}" -JVM_OPTS="${JVM_OPTS} -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${APP_HOME}/logs/heapdump.hprof" -JVM_OPTS="${JVM_OPTS} -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:${APP_HOME}/logs/gc.log" - -# Spring Boot 配置(从环境变量读取) -SPRING_PROFILE=${SPRING_PROFILES_ACTIVE:-prod} -SPRING_OPTS="--spring.profiles.active=${SPRING_PROFILE}" - -# 日志文件 -LOG_DIR="${APP_HOME}/logs" -CONSOLE_LOG="${LOG_DIR}/console.log" -PID_FILE="${APP_HOME}/${APP_NAME}.pid" +JVM_OPTS="${JVM_OPTS} -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${LOG_DIR}/heapdump.hprof" +JVM_OPTS="${JVM_OPTS} -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:${LOG_DIR}/gc.log" # 创建日志目录 mkdir -p "${LOG_DIR}" @@ -80,27 +77,29 @@ if [ -f "${PID_FILE}" ]; then fi fi -# 检查 JAR 文件是否存在 -if [ ! -f "${APP_JAR_PATH}" ]; then - echo "ERROR: 找不到应用 JAR 文件: ${APP_JAR_PATH}" +# 检查 lib 目录是否存在 +if [ ! -d "${APP_HOME}/lib" ]; then + echo "ERROR: 找不到 lib 目录: ${APP_HOME}/lib" exit 1 fi # 启动应用 echo "=========================================" echo "启动应用: ${APP_NAME}" +echo "应用目录: ${APP_HOME}" echo "主类: ${MAIN_CLASS}" echo "Classpath: ${CLASSPATH}" +echo "日志目录: ${LOG_DIR}" echo "=========================================" -nohup java ${JVM_OPTS} -cp "${CLASSPATH}" ${MAIN_CLASS} ${SPRING_OPTS} \ - > "${CONSOLE_LOG}" 2>&1 & +nohup java ${JVM_OPTS} -cp "${CLASSPATH}" ${MAIN_CLASS} \ + > "${STDOUT_LOG}" 2>&1 & PID=$! echo ${PID} > "${PID_FILE}" echo "应用启动中,PID: ${PID}" -echo "日志文件: ${CONSOLE_LOG}" +echo "日志文件: ${STDOUT_LOG}" # 等待应用启动 sleep 5 @@ -108,7 +107,7 @@ sleep 5 # 检查应用是否启动成功 if ps -p ${PID} > /dev/null 2>&1; then echo "应用启动成功!" - echo "查看日志: tail -f ${CONSOLE_LOG}" + echo "查看日志: tail -f ${STDOUT_LOG}" exit 0 else echo "ERROR: 应用启动失败,请查看日志" diff --git a/worklog-api/src/main/resources/service.properties b/worklog-api/src/main/resources/service.properties index 661191c..ec0e785 100644 --- a/worklog-api/src/main/resources/service.properties +++ b/worklog-api/src/main/resources/service.properties @@ -17,10 +17,6 @@ TENANT_ID= # 主启动类(瘦JAR模式必须配置) MAIN_CLASS=com.wjbl.worklog.WorklogApplication -# ==================== 环境标识 ==================== -# 运行环境:dev-开发, test-测试, prod-生产 -SPRING_PROFILES_ACTIVE=prod - # ==================== 个性化覆盖配置(可选) ==================== # 如果当前服务需要使用不同的日志路径,可在此覆盖 # LOG_PATH=/var/logs/worklog-api