金色时刻 · 15:48
让好资源,触手可及
AGENT SKILL

14-i18n-and-logging

14-i18n-and-logging 是面向内容与媒体的 Agent Skill,来自 TencentBlueKing/bk-ci。查看技能说明、操作步骤与使用约定,并通过原项目了解详细用法。

国际化与日志规范指南,涵盖 i18n 消息配置、多语言支持、日志级别规范、日志格式、敏感信息脱敏。当用户实现国际化、配置多语言、规范日志输出或处理日志脱敏时使用。

SKILL.md

下载 MD ↓
name14-i18n-and-logging
description国际化与日志规范指南,涵盖 i18n 消息配置、多语言支持、日志级别规范、日志格式、敏感信息脱敏。当用户实现国际化、配置多语言、规范日志输出或处理日志脱敏时使用。

国际化与日志规范

国际化与日志规范指南.

触发条件

当用户需要实现多语言支持、日志记录、敏感信息脱敏时,使用此 Skill。

国际化(i18n)

配置文件位置

support-files/i18n/
├── message_zh_CN.properties    # 中文
├── message_en_US.properties    # 英文
├── message_ja_JP.properties    # 日文
└── process/
    ├── message_zh_CN.properties
    └── message_en_US.properties

错误码格式

# 格式:错误码=错误信息
2100001=系统内部繁忙,请稍后再试
2100002=参数错误: {0}
2119042=流水线不存在

错误码规范

21 (平台) + 01 (服务) + 001 (业务码)
服务 代码
common 00
project 01
process 19
auth 02

日志规范

日志级别

级别 场景
DEBUG 开发调试,生产不开启
INFO 关键业务信息
WARN 业务逻辑错误
ERROR 系统异常、外部调用异常

日志格式

// 使用管道符分隔
logger.info("QUALITY|pipelineCancelListener|buildId=${event.buildId}")
logger.error("BKSystemErrorMonitor|getBuildVariableValue|$pipelineId-$buildId|${error.message}")

// Logger 获取
companion object {
    private val logger = LoggerFactory.getLogger(ClassName::class.java)
}

敏感字段脱敏

// 使用 @SkipLogField 注解
data class NameAndValue(
    val key: String,
    @SkipLogField
    val value: String,  // 敏感字段
    @SkipLogField("valueType")
    @get:JsonProperty("valueType")
    val type: TestType
)

// 日志输出前脱敏
val logJsonString = JsonUtil.skipLogFields(bean)

最佳实践

  1. 不记录敏感信息:密码、Token、密钥等
  2. 结构化日志:使用管道符分隔关键信息
  3. 错误日志带监控前缀:BKSystemErrorMonitor|
  4. 使用 Kotlin 字符串模板:$variable

相关文件

  • support-files/i18n/ - 国际化配置
  • docs/specification/log_specification.md - 日志规范

来源:TencentBlueKing/bk-ci · MIT 许可 · 许可原文 · MD 为来源页保存的历史版本