【发布时间】:2011-08-20 21:56:19
【问题描述】:
您可以使用 %logger{x} 语法来缩短记录器的名称,其中 x 控制缩短过程。有没有办法以同样的方式缩短线程的名称?
【问题讨论】:
您可以使用 %logger{x} 语法来缩短记录器的名称,其中 x 控制缩短过程。有没有办法以同样的方式缩短线程的名称?
【问题讨论】:
要打印最后 7 个字符和 Rightpad 与空格:
[%-7.7thread]
输出:
14:22:43.097 [main ] DEBUG
14:22:43.341 [main ] INFO
14:22:43.341 [main ] INFO
14:22:45.399 [-target] INFO
【讨论】:
在你的主题开始时这个怎么样?
if (Thread.currentThread().getName().split("-").length > 1) {
String threadName = Thread.currentThread().getName();
threadName = "thread" + threadName.split("-")[3];
Thread.currentThread().setName(threadName);
}
然后在你的 logback.xml 中:
[%-8thread] %msg%n
...你会得到这样的结果:
[main ] Process started
[thread1 ] Thread started
[thread2 ] Thread started
[thread1 ] Thread ended
[thread1 ] Thread started
[thread2 ] Thread ended
[thread2 ] Thread started
[thread1 ] Thread ended
[thread2 ] Thread ended
[thread3 ] Thread ended
[thread4 ] Thread ended
[thread5 ] Thread ended
[main ] Process ended
【讨论】:
[%.7thread]
这将打印线程名称的最后 7 个字符。
线程名称的尾随字符通常比线程名称开头的字符更有趣。 :-)
您可以在 logback 文档中阅读有关 maximum field width modifier 的信息。
【讨论】:
你可以使用:
[%.-10t]
此表达式打印线程名称的前 10 个字符。
【讨论】:
我认为%thread 不存在与{x} 等效的语法,但您可以使用%.-5thread 之类的内容仅打印线程名称的前 5 个字符,但仅打印 5 个字符,而不是缩短版本(显然,根据您的需要调整数字)。
【讨论】: