【log4j2日志框架】敏感字符过滤

0、背景

zookeeper服务端所使用的日志框架被我替换为了log4j2,zk的sessionid又被负责安全的大佬评估为敏感信息,不能直接打印,所以要想一个在不修改源码的情况快速解决sessionid打印屏蔽的办法。

1、log4j2的replace功能

很多日志框架都有过滤替换的功能,log4j2也不例外,支持正则替换。
先看zk的sessionid生成方法
在这里插入图片描述
sessionid高位为服务id,中间为时间戳,低位为递增序列,最大值为Long的最大值。

log4j2.properties的pattern中增加正则表达式

appender.rolling.layout.pattern = %d %p %c{1.} [%t] %replace{%msg}{0x[a-f0-9]{15,}|0x0}{0x*} -%replace{%ex}{0x[a-f0-9]{15,}|0x0}{0x*}%n
appender.rolling.layout.alwaysWriteExceptions=false

这里不仅replace了msg,还replace了ex,因为log4j2中异常是单独区分的,正常日志和异常日志中均有可能出现sessionid,因此要同时对msg和ex配置replace。appender.rolling.layout.alwaysWriteExceptions默认是开启的,既然已经在pattern中配置了ex就要关闭alwaysWriteExceptions。
最终完美替换所有sessionid为0x*
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值