Skip to content

📝 日志配置指南

📖 简介

日志系统是应用程序的重要组成部分,它帮助我们追踪系统运行状态、排查问题和监控性能。本指南将帮助您了解如何在Go Gateway中配置和使用日志功能。

为什么需要日志?

  • 问题排查和调试
  • 系统运行状态监控
  • 安全审计和追踪
  • 性能分析和优化

⚙️ 基础配置

日志级别配置

yaml
log:
  level: debug  # 日志级别
  max-size: 100  # 日志文件最大大小(MB)
  max-backups: 100  # 最大保留的旧日志文件数量
  max-age: 100  # 最大保留天数

配置参数说明

参数名类型说明默认值是否必填
levelString日志级别,可选值:debug/info/warn/errorinfo
max-sizeInteger单个日志文件最大大小,单位:MB100
max-backupsInteger最大保留的旧日志文件数量100
max-ageInteger日志文件最大保留天数100

敏感信息脱敏配置

yaml
log:
  sensitive:  # 脱敏配置
    field-rules:  # 脱敏规则
      - field-names:  # 字段名列表
          - password
          - idCard
          - phone
          - email
        type: password  # 脱敏类型
    max-length: 100  # 单个参数值最大长度

脱敏配置参数说明

参数名类型说明默认值是否必填
field-rulesArray脱敏规则列表-
field-namesArray需要脱敏的字段名列表-
typeString脱敏类型,详见下方脱敏类型支持表格-
max-lengthInteger单个参数值最大长度,超过此长度将被截断-

脱敏类型支持

系统支持以下脱敏类型:

脱敏类型说明示例
mobile手机号138****8888
idcard身份证号110***********1234
bankcard银行卡号6222********1234
email邮箱t***@example.com
password密码********
name名称张**
address地址北京市海淀区***
ipIP地址192.168..
creditcode社会统一信用代码9111***********1234
passport护照号码E********
militaryid军官证号码军********
businesslicense营业执照号码9111***********1234
carnumber车牌号码京A*****
wechatid微信号wxid_****
qqQQ号123****

注意事项

  • 确保敏感字段配置完整
  • 定期检查脱敏规则是否满足安全要求
  • 注意日志文件的安全存储

请求和响应日志配置

日志级别说明

请求和响应日志仅在日志级别为 debug 时生效。如需启用,请确保配置:

yaml
log:
  request:  # 请求日志配置
    enabled: true  # 是否启用请求日志
    urls:  # 允许记录请求日志的URL列表
      - /api/**
      - /web/**
    forbid-urls:  # 禁止记录请求日志的URL列表
      - /api/health
      - /api/metrics
  response:  # 响应日志配置
    enabled: true  # 是否启用响应日志
    urls:  # 允许记录响应日志的URL列表
      - /api/**
      - /web/**
    forbid-urls:  # 禁止记录响应日志的URL列表
      - /api/health
      - /api/metrics

请求和响应配置参数说明

参数名类型说明默认值是否必填
request.enabledBoolean是否启用请求日志false
request.urlsArray允许记录请求日志的URL列表-
request.forbid-urlsArray禁止记录请求日志的URL列表-
response.enabledBoolean是否启用响应日志false
response.urlsArray允许记录响应日志的URL列表-
response.forbid-urlsArray禁止记录响应日志的URL列表-

📋 完整配置示例

基础配置示例

yaml
log:
  level: info  # 生产环境推荐使用info级别
  max-size: 50  # 50MB文件切割
  max-backups: 30  # 保留30个备份文件
  max-age: 7  # 保留7天

开发环境配置

yaml
log:
  level: debug  # 开发环境使用debug级别
  max-size: 10  # 10MB文件切割(开发环境较小)
  max-backups: 5  # 保留5个备份文件
  max-age: 3  # 保留3天
  
  # 请求响应日志(仅debug级别生效)
  request:
    enabled: true
    urls:
      - /api/**
      - /test/**
    forbid-urls:
      - /api/health
      - /api/ping
      
  response:
    enabled: true
    urls:
      - /api/**
      - /test/**
    forbid-urls:
      - /api/health
      - /api/ping

生产环境配置

yaml
log:
  level: warn  # 生产环境只记录警告和错误
  max-size: 100  # 100MB文件切割
  max-backups: 50  # 保留50个备份文件
  max-age: 30  # 保留30天
  
  # 敏感信息脱敏
  sensitive:
    field-rules:
      # 用户敏感信息
      - field-names:
          - password
          - passwd
          - pwd
        type: password
      
      # 个人身份信息
      - field-names:
          - idCard
          - id_card
          - identity_card
        type: idcard
      
      # 联系方式
      - field-names:
          - phone
          - mobile
          - telephone
        type: mobile
      
      # 邮箱地址
      - field-names:
          - email
          - mail
          - email_address
        type: email
      
      # 银行卡信息
      - field-names:
          - bankCard
          - bank_card
          - card_number
        type: bankcard
    
    max-length: 200  # 参数值最大长度限制

完整高级配置

yaml
log:
  level: info
  max-size: 100
  max-backups: 30
  max-age: 15
  
  # 全面的敏感信息脱敏配置
  sensitive:
    field-rules:
      # 密码类
      - field-names:
          - password
          - passwd
          - pwd
          - secret
          - token
          - access_token
          - refresh_token
        type: password
      
      # 身份证件类
      - field-names:
          - idCard
          - id_card
          - identity_card
          - passport
          - military_id
        type: idcard
      
      # 联系方式类
      - field-names:
          - phone
          - mobile
          - telephone
          - cellphone
        type: mobile
      
      # 邮箱类
      - field-names:
          - email
          - mail
          - email_address
          - e_mail
        type: email
      
      # 银行卡类
      - field-names:
          - bankCard
          - bank_card
          - card_number
          - account_number
        type: bankcard
      
      # 姓名类
      - field-names:
          - name
          - real_name
          - full_name
          - user_name
        type: name
      
      # 地址类
      - field-names:
          - address
          - home_address
          - work_address
          - detailed_address
        type: address
      
      # IP地址类
      - field-names:
          - ip
          - ip_address
          - client_ip
          - remote_ip
        type: ip
      
      # 社交账号类
      - field-names:
          - wechat
          - wechat_id
          - qq
          - qq_number
        type: wechatid
    
    max-length: 500
  
  # 请求日志配置(仅在debug级别生效)
  request:
    enabled: false  # 生产环境建议关闭
    urls:
      - /api/admin/**  # 仅记录管理接口
    forbid-urls:
      - /api/health
      - /api/metrics
      - /api/ping
      - /api/status
  
  # 响应日志配置(仅在debug级别生效)
  response:
    enabled: false  # 生产环境建议关闭
    urls:
      - /api/admin/**  # 仅记录管理接口
    forbid-urls:
      - /api/health
      - /api/metrics
      - /api/ping
      - /api/status

不同业务场景配置

金融系统日志配置

yaml
log:
  level: warn  # 金融系统高安全要求
  max-size: 50  # 较小的文件便于管理
  max-backups: 100  # 长期保留
  max-age: 90  # 保留90天(合规要求)
  
  sensitive:
    field-rules:
      # 金融敏感信息
      - field-names:
          - account_number
          - bank_card
          - card_number
          - credit_card
        type: bankcard
      
      # 身份信息
      - field-names:
          - id_card
          - passport
          - social_security
        type: idcard
      
      # 交易密码
      - field-names:
          - trade_password
          - payment_password
          - transaction_pwd
        type: password
      
      # 金额信息(使用地址类型进行部分遮挡)
      - field-names:
          - amount
          - balance
          - money
        type: address
    
    max-length: 100  # 严格限制长度

医疗系统日志配置

yaml
log:
  level: info
  max-size: 100
  max-backups: 50
  max-age: 365  # 医疗数据长期保存
  
  sensitive:
    field-rules:
      # 患者信息
      - field-names:
          - patient_name
          - patient_id
          - medical_record_number
        type: name
      
      # 身份证件
      - field-names:
          - id_card
          - passport
          - insurance_number
        type: idcard
      
      # 联系方式
      - field-names:
          - phone
          - emergency_contact
          - family_phone
        type: mobile
      
      # 医疗隐私
      - field-names:
          - diagnosis
          - medical_history
          - prescription
        type: address  # 使用地址类型进行部分遮挡
    
    max-length: 300

电商系统日志配置

yaml
log:
  level: info
  max-size: 200
  max-backups: 20
  max-age: 30
  
  sensitive:
    field-rules:
      # 用户信息
      - field-names:
          - real_name
          - recipient_name
          - consignee
        type: name
      
      # 联系方式
      - field-names:
          - phone
          - mobile
          - contact_phone
        type: mobile
      
      # 收货地址
      - field-names:
          - shipping_address
          - delivery_address
          - address
        type: address
      
      # 支付信息
      - field-names:
          - bank_card
          - payment_account
          - alipay_account
        type: bankcard
    
    max-length: 200
  
  # 电商系统可能需要记录用户行为(调试时)
  request:
    enabled: false
    urls:
      - /api/order/**
      - /api/payment/**
    forbid-urls:
      - /api/product/list  # 商品列表接口访问频繁
      - /api/category/**   # 分类接口访问频繁

URL匹配规则

  • 支持通配符匹配,如 /api/**
  • 支持精确匹配,如 /api/health
  • 支持多个URL配置,使用数组形式
  • 优先级:forbid-urls > urls

注意事项

  • 请求和响应日志可能包含敏感信息,请确保配置了适当的脱敏规则
  • 建议只记录必要的URL,避免日志量过大
  • 对于高频访问的接口,建议配置到forbid-urls中
  • 定期检查日志内容,确保没有敏感信息泄露

🆘 技术支持

如果遇到问题:

  1. 检查日志配置文件
  2. 查看系统日志
  3. 分析错误信息
  4. 联系技术支持团队

重要提示

  • 定期备份重要日志
  • 确保日志存储安全
  • 遵守数据保护规范
  • 及时处理异常日志