#!/bin/bash # 日志记录模块 # 提供日志记录和日志文件管理功能 # # ⚠️ 重要提示: # 所有配置项必须从 Jenkinsfile 的 environment 部分传入 # 此脚本不包含任何硬编码配置,确保配置集中管理 # # 必需的环境变量: # - BUILD_LOG_FILE: 日志文件路径(应在 Jenkinsfile 中设置) # 全局变量(从环境变量读取,如果没有设置则使用默认值作为后备) BUILD_LOG_FILE="${BUILD_LOG_FILE:-/tmp/build_$(date '+%Y%m%d_%H%M%S').log}" # 初始化日志文件(带 UTF-8 BOM) init_log_file() { echo -ne '\xEF\xBB\xBF' > "$BUILD_LOG_FILE" } # 日志记录函数 log_message() { local message="$1" echo -e "[$(date '+%Y-%m-%d %H:%M:%S')] $message" | tee -a "$BUILD_LOG_FILE" } # 清理旧日志文件,只保留最近5个 cleanup_old_logs() { local log_dir="${1:-/tmp}" local log_prefix="${2:-build_}" # 列出所有构建日志文件(按时间从旧到新排序),删除旧的文件,只保留最新的5个 find "$log_dir" -name "${log_prefix}*.log" -type f -printf '%T+ %p\n' | \ sort | \ head -n -5 | \ awk '{print $2}' | \ xargs -r rm -f log_message "已清理旧日志文件" } # 统计日志中的警告和错误数量 get_log_stats() { local warning_count=$(grep -i "warning" "$BUILD_LOG_FILE" | wc -l) local error_count=$(grep -i "error" "$BUILD_LOG_FILE" | wc -l) echo "WARNING_COUNT=${warning_count}" echo "ERROR_COUNT=${error_count}" }