【问题标题】:How to shorten thread name in logback logs?如何缩短 logback 日志中的线程名称?
【发布时间】:2011-08-20 21:56:19
【问题描述】:

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

【问题讨论】:

    标签: java logging logback


    【解决方案1】:

    要打印最后 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  
    

    【讨论】:

      【解决方案2】:

      在你的主题开始时这个怎么样?

      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
      

      【讨论】:

        【解决方案3】:
        [%.7thread]
        

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

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

        您可以在 logback 文档中阅读有关 maximum field width modifier 的信息。

        【讨论】:

        【解决方案4】:

        你可以使用:

        [%.-10t]
        

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

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            猜你喜欢
            • 2020-10-26
            • 1970-01-01
            • 2022-01-25
            • 2020-07-13
            • 1970-01-01
            • 2015-07-18
            • 1970-01-01
            • 2016-08-06
            • 2018-10-04
            相关资源
            最近更新 更多