Log4j中如何将类.方法:行格式化为固定长度?
如何让Log4j中
类.方法:行整体保持固定长度对齐? 你当前使用的Log4j日志模式是:
%d{HH:mm:ss.SSS} | %-5.5p | %-15.15t | %-30.70C.%-5.20M:%-3.5L | %msg%n
但因为完整类名.方法名:行号的整体长度不固定,导致所有日志行的实际消息起始位置没法对齐,你想找一种类似%-60.60CML(该写法无效)的方式,用单个转换说明符把这整块格式化为固定长度。
针对这个需求,我可以明确告诉你:在Log4j 1.2里,无法通过单个转换说明符实现这个功能。
我仔细查阅了Log4j 1.2的PatternLayout文档,里面明确规定了每个转换说明符的结构:以百分号%开头,后跟可选的格式修饰符,最后必须是单个转换字符——解析器一旦识别到转换字符,就会判定当前说明符结束,完全不支持将多个转换字符(比如代表类名的C、方法名的M、行号的L)合并到同一个说明符中,来统一设置整块的长度格式。
之后我也找相关人员确认了这个情况,@Remko Popma(Log4j的核心贡献者之一)证实了当前版本确实没有这个功能。不过好消息是,这个需求已经被提交到Jira,工单编号为LOG4J2-2339,后续Log4j有可能会新增对应的转换器来支持这个整块格式化的需求。
内容的提问来源于stack exchange,提问作者bastiat
相关产品推荐
相关产品推荐

