一招给你的log4j2日志穿件”花衣服“

概述

大家项目中打印在Console中的日志是什么样的呢?是否都是清一色的黑色字体,如下图所示,这样会导致一些关键日志信息,比如error、warn日志被忽视掉,那有什么办法可以修改Console中日志的样式,让一些关键日志能够显著的被找到?

修改Log4j2日志样式

通过修改log4j2.xml中的日志样式配置,可以打印出下图的日志,是不是很清楚。

如何做到的呢?

  1. 修改日志配置中pattern属性, 通过%style{xxxx}{styleValue1,styleValue2} %highlight{}可以很容易修改日志样式,下一章节详细讲解下相关样式。
%style{%d{ISO8601}}{bright,green} %highlight{%-5level} [%style{%t}{bright,blue}] %style{%C{}}{bright,yellow}: %msg%n%style{%throwable}{red}
复制代码
  1. 设置属性disableAnsi为false,表示开启Ansi,这样才会输出有样式的日志。

样式配置详解

highlight{pattern}{style}

说明: 根据当前事件的日志记录级别添加ANSI颜色。

默认颜色如下:

颜色表:

例子:

%highlight{%d [%t] %-5level: %msg%n%throwable}
复制代码

你可以在可选的{style}选项中覆盖默认颜色。例如:

%highlight{%d [%t] %-5level: %msg%n%throwable}{FATAL=white, ERROR=red, WARN=bright_blue, INFO=black, DEBUG=bright_green, TRACE=blue}
复制代码

同时也可以使用真颜色(24位)。例如:

%highlight{%d [%t] %-5level: %msg%n%throwable}{FATAL=white, ERROR=red, WARN=bg_#5792e6 fg_#eef26b bold, INFO=black, DEBUG=#3fe0a8, TRACE=blue}
复制代码

你只能突出显示日志事件的一部分:

%d [%t] %highlight{%-5level: %msg%n%throwable}
复制代码

你也可以使用STYLE键来使用预定义的一组颜色:

%highlight{%d [%t] %-5level: %msg%n%throwable}{STYLE=Logback}
复制代码

style{pattern}{ANSI style}

说明: 使用ANSI转义序列对封闭模式的结果设置样式。样式可以由下表中样式名称的逗号分隔列表组成。

样式描述
NormalNormal display
BrightBold
DimDimmed or faint characters
UnderlineUnderlined characters
BlinkBlinking characters
ReverseReverse video
Hidden
Black or FG_BlackSet foreground color to black
Red or FG_RedSet foreground color to red
Green or FG_GreenSet foreground color to green
Yellow or FG_YellowSet foreground color to yellow
Blue or FG_BlueSet foreground color to blue
Magenta or FG_MagentaSet foreground color to magenta
Cyan or FG_CyanSet foreground color to cyan
White or FG_WhiteSet foreground color to white
Default or FG_DefaultSet foreground color to default (white)
BG_BlackSet background color to black
BG_RedSet background color to red
BG_GreenSet background color to green
BG_YellowSet background color to yellow
BG_BlueSet background color to blue
BG_MagentaSet background color to magenta
BG_CyanSet background color to cyan
BG_WhiteSet background color to white

例子:

%style{%d{ISO8601}}{black} %style{[%t]}{blue} %style{%-5level:}{yellow} %style{%msg%n%throwable}{green}
复制代码

你也可以组合不同的风格:

%d %highlight{%p} %style{%logger}{bright,cyan} %C{1.} %msg%n
复制代码

您还可以将%和颜色组合,比如 %black, %blue, %cyan一起使用。例如:

%black{%d{ISO8601}} %blue{[%t]} %yellow{%-5level:} %green{%msg%n%throwable}
复制代码

总结

本文讲解了log4j2框架下如何美化你输出的日志,不过这只针对控制台输出的日志起效,文件中的日志并不生效,希望大家都用起来呀。


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的log4j2日志脱敏的过滤器示例: 首先,在log4j2配置文件中添加以下内容: ```xml <Configuration> <Appenders> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> <filters> <Filter type="Script" language="groovy" script="if (logEvent.getMessage().getFormattedMessage().contains('password')) {return Result.DENY;} else {return Result.NEUTRAL;}"/> </filters> </Console> </Appenders> <Loggers> <Root level="info"> <AppenderRef ref="Console"/> </Root> </Loggers> </Configuration> ``` 其中,filters标签用于添加过滤器,type属性为“Script”,表示使用脚本过滤器,language属性为“groovy”,表示使用Groovy语言编写脚本。 然后,在script属性中添加以下Groovy脚本: ```groovy if (logEvent.getMessage().getFormattedMessage().contains('password')) { def message = logEvent.getMessage().getFormattedMessage().replaceAll(/password=\S+/, 'password=******') return new LogEvent(loggerName, logEvent.getMarker(), loggerFqcn, logEvent.getLevel(), message, logEvent.getThrown(), logEvent.getContextMap(), logEvent.getContextStack(), logEvent.getThreadName(), logEvent.getSource(), logEvent.getTimeMillis()) } else { return logEvent } ``` 该脚本会检查日志消息中是否包含“password”关键字,如果包含,则将“password”后面的字符替换为“******”,然后返回修改后的LogEvent对象。如果不包含,则直接返回原始的LogEvent对象。 这样配置后,当日志中包含“password”关键字时,日志消息中的“password”后面的字符就会被替换为“******”,从而实现了日志脱敏的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值