Как сократить имя потока в журналах logback?

вы можете сократить имя регистратора, используя синтаксис %logger{x}, где x управляет процедурой сокращения. Есть ли способ сократить название потока таким же образом?

5 ответов


[%.7thread]

выводит последние 7 символов имени резьбы.

конечные символы имени потока часто более интересны, чем символы в начале имени потока. :-)

вы можете прочитать о модификатор максимальной ширины поля в документах logback.


вы можете использовать:

[%.-10t]

это выражение выводит первые 10 символов имени потока.


Я не думаю, что есть эквивалент {x} синтаксис %thread, но вы можете использовать что-то вроде %.-5thread чтобы напечатать только первые 5 символов имени потока, но только 5, а не сокращенную версию (очевидно, настройте номер в соответствии с вашими потребностями).


как насчет этого в начале вашей нити?

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

для печати 7 последних символов и правой панели с пробелами:

[%-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