栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在日志中显示线程ID而不是线程名称

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在日志中显示线程ID而不是线程名称

这是可能的,但并不像仅使用一些预配置的模式那样容易。

Log4j 1.X和Log4j 2.x没有用于打印线程ID的任何预配置模式,但是您始终可以使用一些“魔术”。

PatternLayout
正在使用
PatternParser
标记为
final
类的类,并且将“模式”的静态映射作为键并将
Converters
类作为值。每当Parses从其开始以日志记录格式格式找到用于记录的格式时,
%
都会使用与此映射键匹配的转换器。

您不能将自己的规则添加到该地图,但仍可以编写自己的MyOwnPatternLayout:

public class MyOwnPatternLayout extends PatternLayout

这将在它的

format
方法中做到这一点:

public String format(LoggingEvent event) {   String log = super.format(event);      return log.replaceAll("%i", someThreadID);}

唯一的问题是,您必须以某种方式获取该线程ID。有时您要做的就是解析线程名称,您可以轻松地收集它:

String threadName = event.getThreadName();

例如,Apache-Tomcat将线程ID放在线程名称 http-nio- / 127.0.0.1-8084“ -exec-41 的末尾。

为了确保线程ID正确,您还可以创建自己的LogginEvent和Logger子类(MyLoggingEvent和MyLogger),并在MyLogger内创建MyLoggingEvent巫婆还将线程ID不仅作为线程名作为参数。然后,您可以轻松地在上面的代码中收集它。

抱歉,我的回答很长,希望至少能对您有所帮助。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/495130.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号