Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么在Slf4j+;Log4j2不工作?_Java_Logging_Slf4j_Log4j2 - Fatal编程技术网

Java 为什么在Slf4j+;Log4j2不工作?

Java 为什么在Slf4j+;Log4j2不工作?,java,logging,slf4j,log4j2,Java,Logging,Slf4j,Log4j2,当从代码中的特定位置登录时,我试图限制异常堆栈跟踪深度。以下是我的配置(关键部分): 但由于某些原因,标记似乎不匹配,即我正在记录完整的堆栈。当我将%throwable{5}添加到defaultPattern属性时,堆栈按预期被截断 以下是启动期间的相关调试日志(剥离时间戳和级别)。如果我读对了,它似乎构造了匹配器ok Building Plugin[name=PatternMatch, class=org.apache.logging.log4j.core.layout.PatternMatc

当从代码中的特定位置登录时,我试图限制异常堆栈跟踪深度。以下是我的配置(关键部分):

但由于某些原因,标记似乎不匹配,即我正在记录完整的堆栈。当我将
%throwable{5}
添加到
defaultPattern
属性时,堆栈按预期被截断

以下是启动期间的相关调试日志(剥离时间戳和级别)。如果我读对了,它似乎构造了匹配器ok

Building Plugin[name=PatternMatch, class=org.apache.logging.log4j.core.layout.PatternMatch]. Searching for builder factory method...
Found builder factory method [newBuilder]: public static org.apache.logging.log4j.core.layout.PatternMatch$Builder org.apache.logging.log4j.core.layout.PatternMatch.newBuilder().
Calling build() on class class org.apache.logging.log4j.core.layout.PatternMatch$Builder for element PatternMatch with params(, key="ExceptionInterceptor", pattern="%d{dd MMM yyyy HH:mm:ss,SSS}: %m%throwable{5}%n")
Built Plugin[name=PatternMatch] OK from builder factory method.
Building Plugin[name=patternSelector, class=org.apache.logging.log4j.core.layout.MarkerPatternSelector]. Searching for builder factory method...
No builder factory method found in class org.apache.logging.log4j.core.layout.MarkerPatternSelector. Going to try finding a factory method instead.
Still building Plugin[name=patternSelector, class=org.apache.logging.log4j.core.layout.MarkerPatternSelector]. Searching for factory method...
Found factory method [createSelector]: public static org.apache.logging.log4j.core.layout.MarkerPatternSelector org.apache.logging.
log4j.core.layout.MarkerPatternSelector.createSelector(org.apache.logging.log4j.core.layout.PatternMatch[],java.lang.String,boolean,boolean,org.apache.logging.log4j.core.config.Configuration).

上面的代码有什么问题导致标记不匹配?

我同意您的分析,也没有发现配置有任何问题。(感谢您显示状态日志片段。)


您可能发现了一个bug。请在Log4j2 JIRA问题跟踪器上提出此问题。请提及您正在使用的Log4j2版本。(如果您还没有试用最新版本,请先试用。)

您是对的。我使用的是log4j2.4,升级到2.6后问题就消失了。非常感谢。您可能需要升级到2.8,因为自2.6以来,已经修复了许多错误…:-)
@Slf4j
public final class ExceptionInterceptor {
   private static final Marker MARKER = MarkerFactory.getMarker("ExceptionInterceptor");

   public void intercept(Throwable t) {
      log.info(MARKER, "Got exception", t);
   }
Building Plugin[name=PatternMatch, class=org.apache.logging.log4j.core.layout.PatternMatch]. Searching for builder factory method...
Found builder factory method [newBuilder]: public static org.apache.logging.log4j.core.layout.PatternMatch$Builder org.apache.logging.log4j.core.layout.PatternMatch.newBuilder().
Calling build() on class class org.apache.logging.log4j.core.layout.PatternMatch$Builder for element PatternMatch with params(, key="ExceptionInterceptor", pattern="%d{dd MMM yyyy HH:mm:ss,SSS}: %m%throwable{5}%n")
Built Plugin[name=PatternMatch] OK from builder factory method.
Building Plugin[name=patternSelector, class=org.apache.logging.log4j.core.layout.MarkerPatternSelector]. Searching for builder factory method...
No builder factory method found in class org.apache.logging.log4j.core.layout.MarkerPatternSelector. Going to try finding a factory method instead.
Still building Plugin[name=patternSelector, class=org.apache.logging.log4j.core.layout.MarkerPatternSelector]. Searching for factory method...
Found factory method [createSelector]: public static org.apache.logging.log4j.core.layout.MarkerPatternSelector org.apache.logging.
log4j.core.layout.MarkerPatternSelector.createSelector(org.apache.logging.log4j.core.layout.PatternMatch[],java.lang.String,boolean,boolean,org.apache.logging.log4j.core.config.Configuration).