feat: support masking sensitive data in logx (#5003)

Signed-off-by: kevin <wanjunfeng@gmail.com>
This commit is contained in:
Kevin Wan
2025-07-18 19:51:22 +08:00
committed by GitHub
parent 1d2b0d7ab8
commit f11b78ced9
4 changed files with 119 additions and 3 deletions

View File

@@ -365,19 +365,22 @@ func mergeGlobalFields(fields []LogField) []LogField {
}
func output(writer io.Writer, level string, val any, fields ...LogField) {
// only truncate string content, don't know how to truncate the values of other types.
if v, ok := val.(string); ok {
switch v := val.(type) {
case string:
// only truncate string content, don't know how to truncate the values of other types.
maxLen := atomic.LoadUint32(&maxContentLength)
if maxLen > 0 && len(v) > int(maxLen) {
val = v[:maxLen]
fields = append(fields, truncatedField)
}
case Sensitive:
val = v.MaskSensitive()
}
// +3 for timestamp, level and content
entry := make(logEntry, len(fields)+3)
for _, field := range fields {
entry[field.Key] = field.Value
entry[field.Key] = maskSensitive(field.Value)
}
switch atomic.LoadUint32(&encoding) {