17

您可以使用 %logger{x} 语法缩短记录器的名称,其中 x 控制缩短过程。有没有办法以同样的方式缩短线程的名称?

4

5 回答 5

31
[%.7thread]

这将打印线程名称的最后7 个字符。

线程名称的尾随字符通常比线程名称开头的字符更有趣。:-)

您可以在 logback 文档中阅读有关最大字段宽度修饰符的信息。

于 2013-03-20T03:17:54.723 回答
6

您可以使用:

[%.-10t]

此表达式打印线程名称的前 10 个字符。

于 2011-08-30T10:14:51.803 回答
3

要打印最后 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  
于 2018-08-16T12:25:43.233 回答
1

我不认为有等效的{x}语法 for %thread,但您可以使用类似%.-5thread打印线程名称的前 5 个字符,但只打印 5 个字符,而不是缩短版本(显然,根据您的需要调整数字) .

于 2011-08-30T10:09:29.230 回答
1

在你的线程开始时这个怎么样?

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
于 2017-06-07T10:31:19.427 回答