【问题标题】:Empty Threadcontext braces scenario handling in log4j2空线程上下文支持 log4j2 中的场景处理
【发布时间】:2017-05-24 22:43:18
【问题描述】:

我正在尝试迁移到 log4j2。 在 RollingFile Appender 我添加如下:

<PatternLayout>
    <pattern>[%d{MM/dd/yy HH:mm:ss:SSS z}] %-18.18t %-35.35c{1} %-5p (%F:%L) %m \t %x %n</pattern>
</PatternLayout>

我们知道 %x 用于将堆栈元素打印到每个记录器语句的末尾。

现在如果我的堆栈最初是空的,它会给我下面的空括号。

[01/10/17 12:17:37:116 IST] main               Example2                            WARN  (Example2.java:52) 10 is the number     [] 

[01/10/17 12:17:37:116 IST] main Example2 WARN (Example2.java:52) 10 是数字 []

那么我该如何处理这个空栈场景呢?

【问题讨论】:

  • 我想要没有大括号的记录器,如下所示。 [01/10/17 12:17:37:116 IST] main Example2 WARN (Example2.java:52) 10 is the number

标签: java stack log4j2 threadcontext


【解决方案1】:

你可以使用PatternLayoutnotEmpty{pattern}模式转换器:

当且仅当模式中的所有变量都不为空时,才会输出模式的评估结果。

例如:

%notEmpty{[%x]}

别名:variablesNotEmpty{pattern}, varsNotEmpty{模式}, notEmpty{模式}

【讨论】:

  • 这行不通。它将 %notEmpty{[%x]} 作为 %n 并将记录器带到下一行。
  • 你用的是什么版本?这个功能是相当新的。你试过varsNotEmpty吗?
  • 2.7 版?还是更老的东西?
  • 现在输出记录器是[01/11/17 12:22:59:693 IST] main Example2 DEBUG (Example2.java:56) 10 is the number otEmpty
  • 无法迁移到 v2.7,因为无法超越 Java 6。因此我使用的是 log4j v2.3
猜你喜欢
  • 1970-01-01
  • 2023-02-10
  • 1970-01-01
  • 1970-01-01
  • 2012-04-19
  • 1970-01-01
  • 2015-06-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多