logger.sh 1.5 KB

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