Java 在Logback中创建自定义布局

Java 在Logback中创建自定义布局,java,logging,logback,Java,Logging,Logback,我正在尝试在logback中创建自定义布局,如中的示例所示: 以下是我收到的错误消息: 05:40:11,519 |-ERROR in ch.qos.logback.core.joran.util.PropertySetter@3462fc6c - Could not invoke method setLayout in class ch.qos.logback.classic.encoder.PatternLayoutEncoder with parameter of type com.dce

我正在尝试在logback中创建自定义布局,如中的示例所示:

以下是我收到的错误消息:

05:40:11,519 |-ERROR in ch.qos.logback.core.joran.util.PropertySetter@3462fc6c - Could not invoke method setLayout in class ch.qos.logback.classic.encoder.PatternLayoutEncoder with parameter of type com.dces.util.LoggingConsoleLayout java.lang.reflect.InvocationTargetException
at java.lang.reflect.InvocationTargetException
at  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at  at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at  at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at  at java.lang.reflect.Method.invoke(Unknown Source)
at  at ch.qos.logback.core.joran.util.PropertySetter.invokeMethodWithSingleParameterOnThisObject(PropertySetter.java:293)
at  at ch.qos.logback.core.joran.util.PropertySetter.setComplexProperty(PropertySetter.java:356)
at  at ch.qos.logback.core.joran.action.NestedComplexPropertyIA.end(NestedComplexPropertyIA.java:179)
at  at ch.qos.logback.core.joran.spi.Interpreter.callEndAction(Interpreter.java:318)
at  at ch.qos.logback.core.joran.spi.Interpreter.endElement(Interpreter.java:197)
at  at ch.qos.logback.core.joran.spi.Interpreter.endElement(Interpreter.java:183)
at  at ch.qos.logback.core.joran.spi.EventPlayer.play(EventPlayer.java:62)
at  at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:157)
at  at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:143)
at  at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:106)
at  at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:56)
at  at ch.qos.logback.classic.util.ContextInitializer.configureByResource(ContextInitializer.java:75)
at  at ch.qos.logback.classic.util.ContextInitializer.autoConfig(ContextInitializer.java:148)
at  at org.slf4j.impl.StaticLoggerBinder.init(StaticLoggerBinder.java:85)
at  at org.slf4j.impl.StaticLoggerBinder.<clinit>(StaticLoggerBinder.java:55)
at  at org.slf4j.LoggerFactory.bind(LoggerFactory.java:128)
at  at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:107)
at  at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:295)
at  at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:269)
at  at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:281)
at  at com.dces.Main.<clinit>(Main.java:8)
Caused by: java.lang.UnsupportedOperationException: one cannot set the layout of ch.qos.logback.classic.encoder.PatternLayoutEncoder
at  at ch.qos.logback.core.pattern.PatternLayoutEncoderBase.setLayout(PatternLayoutEncoderBase.java:64)
at  ... 25 common frames omitted
05:40:11,538 |-ERROR in ch.qos.logback.classic.PatternLayout("null") - Empty or null pattern.
05:40:11519 |-ch.qos.logback.core.joran.util中存在错误。PropertySetter@3462fc6c-无法使用com.dces.util.LoggingConsoleLayout java.lang.reflect.InvocationTargetException类型的参数调用类ch.qos.logback.classic.encoder.PatternLayoutCoder中的方法setLayout
在java.lang.reflect.InvocationTargetException
at at sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)
at at sun.reflect.NativeMethodAccessorImpl.invoke(未知源)
在sun.reflect.DelegatingMethodAccessorImpl.invoke处(未知源)
位于java.lang.reflect.Method.invoke(未知源)
位于ch.qos.logback.core.joran.util.PropertySetter.invokeMethodWithSingleParameterOnThisObject(PropertySetter.java:293)
位于ch.qos.logback.core.joran.util.PropertySetter.setComplexProperty(PropertySetter.java:356)
位于ch.qos.logback.core.joran.action.NestedComplexPropertyIA.end(NestedComplexPropertyIA.java:179)
位于ch.qos.logback.core.joran.spi.Interpreter.callEndAction(Interpreter.java:318)
位于ch.qos.logback.core.joran.spi.explorer.endElement(explorer.java:197)
位于ch.qos.logback.core.joran.spi.Interpreter.endElement(Interpreter.java:183)
位于ch.qos.logback.core.joran.spi.EventPlayer.play(EventPlayer.java:62)
位于ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:157)
位于ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:143)
位于ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:106)
位于ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:56)
位于ch.qos.logback.classic.util.ContextInitializer.configureByResource(ContextInitializer.java:75)
位于ch.qos.logback.classic.util.ContextInitializer.autoConfig(ContextInitializer.java:148)
位于org.slf4j.impl.StaticLoggerBinder.init(StaticLoggerBinder.java:85)
位于org.slf4j.impl.StaticLoggerBinder(StaticLoggerBinder.java:55)
位于org.slf4j.LoggerFactory.bind(LoggerFactory.java:128)
位于org.slf4j.LoggerFactory.performinization(LoggerFactory.java:107)
位于org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:295)
位于org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:269)
位于org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:281)
位于com.dces.Main。(Main.java:8)
原因:java.lang.UnsupportedOperationException:无法设置ch.qos.logback.classic.encoder.PatternLayoutCoder的布局
位于ch.qos.logback.core.pattern.PatternLayoutCoderbase.setLayout(patternLayoutCoderbase.java:64)
在省略25个公共框架
05:40:11538 |-ch.qos.logback.classic.PatternLayout(“null”)中出错-空模式或null模式。

默认编码器是PatternLayoutCoder,它是PatternLayoutCoderbase的子类。 PatternLayoutCoderBase仅支持设置日志模式,例如:

<encoder>
     <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>

%d{HH:mm:ss.SSS}[%thread]-5级别%logger{36}-%msg%n
您可以改用LayoutWrappingCoder

  <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
        <layout class="com.dces.util.LoggingConsoleLayout" />
  </encoder>

05:40:11,519 |-ERROR in ch.qos.logback.core.joran.util.PropertySetter@3462fc6c - Could not invoke method setLayout in class ch.qos.logback.classic.encoder.PatternLayoutEncoder with parameter of type com.dces.util.LoggingConsoleLayout java.lang.reflect.InvocationTargetException
at java.lang.reflect.InvocationTargetException
at  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at  at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at  at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at  at java.lang.reflect.Method.invoke(Unknown Source)
at  at ch.qos.logback.core.joran.util.PropertySetter.invokeMethodWithSingleParameterOnThisObject(PropertySetter.java:293)
at  at ch.qos.logback.core.joran.util.PropertySetter.setComplexProperty(PropertySetter.java:356)
at  at ch.qos.logback.core.joran.action.NestedComplexPropertyIA.end(NestedComplexPropertyIA.java:179)
at  at ch.qos.logback.core.joran.spi.Interpreter.callEndAction(Interpreter.java:318)
at  at ch.qos.logback.core.joran.spi.Interpreter.endElement(Interpreter.java:197)
at  at ch.qos.logback.core.joran.spi.Interpreter.endElement(Interpreter.java:183)
at  at ch.qos.logback.core.joran.spi.EventPlayer.play(EventPlayer.java:62)
at  at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:157)
at  at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:143)
at  at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:106)
at  at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:56)
at  at ch.qos.logback.classic.util.ContextInitializer.configureByResource(ContextInitializer.java:75)
at  at ch.qos.logback.classic.util.ContextInitializer.autoConfig(ContextInitializer.java:148)
at  at org.slf4j.impl.StaticLoggerBinder.init(StaticLoggerBinder.java:85)
at  at org.slf4j.impl.StaticLoggerBinder.<clinit>(StaticLoggerBinder.java:55)
at  at org.slf4j.LoggerFactory.bind(LoggerFactory.java:128)
at  at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:107)
at  at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:295)
at  at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:269)
at  at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:281)
at  at com.dces.Main.<clinit>(Main.java:8)
Caused by: java.lang.UnsupportedOperationException: one cannot set the layout of ch.qos.logback.classic.encoder.PatternLayoutEncoder
at  at ch.qos.logback.core.pattern.PatternLayoutEncoderBase.setLayout(PatternLayoutEncoderBase.java:64)
at  ... 25 common frames omitted
05:40:11,538 |-ERROR in ch.qos.logback.classic.PatternLayout("null") - Empty or null pattern.
<encoder>
     <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
  <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
        <layout class="com.dces.util.LoggingConsoleLayout" />
  </encoder>