Как определить отдельное приложение для журналов запуска Spring Boot в Log4j2? - PullRequest
0 голосов
/ 30 мая 2019

Я получаю исключение ниже, когда log4j2 интегрирован с SpringBoot-2.Когда я пытаюсь понять исключение, создается впечатление, что JsonLayout в log4j2 пытается преобразовать строки журнала AutoConfigurationReport SpringBoot в JSON.И там это терпит неудачу.

ОШИБКА com.fasterxml.jackson.databind.exc.InvalidDefinitionException: не найден сериализатор для класса org.springframework.boot.autoconfigure.logging.ConditionEvaluationReportMessage и не обнаружены свойства для создания BeanSerializer (чтобы избежать исключения,отключить SerializationFeature.FAIL_ON_EMPTY_BEANS) (через цепочку ссылок: org.apache.logging.log4j.core.impl.Log4jLogEvent ["message"]) com.fasterxml.jackson.databind.exc.InvalidDefinitionException: не найден сериализатор для класса org.sprf.boot.autoconfigure.logging.ConditionEvaluationReportMessage и не обнаружено никаких свойств для создания BeanSerializer (во избежание исключения отключите SerializationFeature.FAIL_ON_EMPTY_BEANS) (через цепочку ссылок: org.apache.logging.log4j.core.impl.Log4jLogEvent ["message"]).fasterxml.jackson.databind.exc.InvalidDefinitionException.from (InvalidDefinitionException.java:77) в com.fasterxml.jackson.databind.SerializerProvider.reportBadDefinition (SerializerProvider.java:1).191) в com.fasterxml.jackson.databind.DatabindContext.reportBadDefinition (DatabindContext.java:313) в com.fasterxml.jackson.databind.ser.impl.UnknownSerializer.failForEmpty (UnknownSerializer.java:71) в com.fasterxmlj..databind.ser.impl.UnknownSerializer.serialize (UnknownSerializer.java:33) при com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serialize (DefaultSerializerProvider.java:480) при com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue (DefaultSerializerProvider.java:319) по адресу com.fasterxml.jackson.databind.ObjectMapper.writeValue (ObjectMapper.java:2655) по адресу com.fasterxml.jackson.core.base.GeneratorBase.writeObject (GeneratorBase.java.java.java.java.jorg.apache.logging.log4j.core.jackson.ObjectMessageSerializer.serialize (ObjectMessageSerializer.java:44) в org.apache.logging.log4j.core.jackson.ObjectMessageSerializer.serialize (ObjectMessageSerializer.java:33 com)jackson.databind.ser.BeanPropertyWriter.serializeAsField (BeanPropertyWriter.java:727) по адресу com.fasterxml.jackson.databind.ser.impl.SimpleBeanPropertyFilter.serializeAsField (SimpleBeanPropertyFilter.java:208) по адресу com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.seanFizerJaseF:771) в com.fasterxml.jackson.databind.ser.BeanSerializer.serialize (BeanSerializer.java:153) в com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serialize (DefaultSerializerProvider.java:480) в com.fasterxml.jackson.databind..java: 1120) at com.fasterxml.jackson.databind.ObjectWriter.writeValue (ObjectWriter.java:966) в org.apache.logging.log4j.core.layout.AbstractJacksonLayout.toSerializable (AbstractJacksonLayout.java:304 at)apache.logging.log4j.core.layout.JsonLayout.toSerializable (JsonLayout.java:291) в org.apache.logging.log4j.core.layout.AbstractJacksonLayout.toSerializable (AbstractJacksonLayout.java:255) в org.apache.logging.log4j.core.layout.JsonLayout.toSerializable (Json:68) в org.apache.logging.log4j.core.layout.AbstractJacksonLayout.toSerializable (AbstractJacksonLayout.java:44) в org.apache.logging.log4j.core.layout.AbstractStringLayout.toByteArray (AbstractStringLayout) или gg.apache.logging.log4j.core.layout.AbstractLayout.encode (AbstractLayout.java:210) вorg.apache.logging.log4j.core.layout.AbstractLayout.encode (AbstractLayout.java:37) в org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.directEncodeEvent (AbstractOutputStreamAppender.java:197) в org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.tryAppend (AbstractOutputStreamAppender.java:190) в org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.append (AbstractOutputStreamAppender.java:181) в org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender (AppenderControl.java:156) в org.apache.logging.log4j.core.config.AppenderControl.callAppender0 (AppenderControl.java:129) в org.apache.logging.log4j.core.config.AppenderControl.callAppenderPreventRecursion (AppenderControl.java:120) в org.apache.logging.log4j.core.config.AppenderControl.callAppender (AppenderControl.java:84) в org.apache.logging.log4j.core.config.LoggerConfig.callAppenders (LoggerConfig.java:464) в org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent (LoggerConfig.java:448) в org.apache.logging.log4j.core.config.LoggerConfig.log (LoggerConfig.java:431) в org.apache.logging.log4j.core.config.LoggerConfig.log (LoggerConfig.java:406) в org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy.log (AwaitCompletionReliabilityStrategy.java:63) в org.apache.logging.log4j.core.Logger.logMessage (Logger.java:146) в org.apache.logging.log4j.spi.AbstractLogger.tryLogMessage (AbstractLogger.java:2170) в org.apache.logging.log4j.spi.AbstractLogger.logMessageTrackRecursion (AbstractLogger.java:2125) в org.apache.logging.log4j.spi.AbstractLogger.logMessageSafely (AbstractLogger.java:2108) в org.apache.logging.log4j.spi.AbstractLogger.logMessage (AbstractLogger.java:1985) в org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled (AbstractLogger.java:1843) в org.apache.commons.logging.LogAdapter $ Log4jLog.log (LogAdapter.java:265) в org.apache.commons.logging.LogAdapter $ Log4jLog.debug (LogAdapter.java:235) в org.springframework.boot.autoconfigure.logging.ConditionEvaluationReportLoggingListener.logAutoConfigurationReport (ConditionEvaluationReportLoggingListener.java:132) в org.springframework.boot.autoconfigure.logging.ConditionEvaluationReportLoggingListener.logAutoConfigurationReport (ConditionEvaluationReportLoggingListener.java:108) в org.springframework.boot.autoconfigure.logging.ConditionEvaluationReportLoggingListener.onApplicationEvent (ConditionEvaluationReportLoggingListener.java:97) в org.springframework.boot.autoconfigure.logging.ConditionEvaluationReportLoggingListener $ ConditionEvaluationReportListener.onApplicationEvent (ConditionEvaluationReportLoggingListener.java:173) в org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener (SimpleApplicationEventMulticaster.java:172) в org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener (SimpleApplicationEventMulticaster.java:165) в org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent (SimpleApplicationEventMulticaster.java:139) в org.springframework.context.support.AbstractApplicationContext.publishEvent (AbstractApplicationContext.java:402) в org.springframework.context.support.AbstractApplicationContext.publishEvent (AbstractApplicationContext.java:359) в org.springframework.context.support.AbstractApplicationContext.finishRefresh (AbstractApplicationContext.java:896) в org.springframework.context.support.AbstractApplicationContext.refresh (AbstractApplicationContext.java:552) в org.springframework.boot.SpringApplication.refresh (SpringApplication.java:775) в org.springframework.boot.SpringApplication.refreshContext (SpringApplication.java:397) в org.springframework.boot.SpringApplication.run (SpringApplication.java:316) вorg.springframework.boot.builder.SpringApplicationBuilder.run (SpringApplicationBuilder.java:139) в org.springframework.cloud.bootstrap.BootstrapApplicationListener.bootstrapServiceContext (BootstrapApplicationListener.java:203) в org.springframework.cloud.bootstrap.BootstrapApplicationListener.onApplicationEvent (BootstrapApplicationListener.java:114) в org.springframework.cloud.bootstrap.BootstrapApplicationListener.onApplicationEvent (BootstrapApplicationListener.java:71) в org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener (SimpleApplicationEventMulticaster.java:172) в org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener (SimpleApplicationEventMulticaster.java:165) в org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent (SimpleApplicationEventMulticaster.java:139) в org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent (SimpleApplicationEventMulticaster.java:127) в org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared (EventPublishingRunListener.java:75) в org.springframework.boot.SpringApplicationRunListeners.environmentPrepared (SpringApplicationRunListeners.java:54) в org.springframework.boot.SpringApplication.prepareEnvironment (SpringApplication.java:347) в org.springframework.boot.SpringApplication.run (SpringApplication.java:306) в org.springframework.boot.SpringApplication.run (SpringApplication.java:1260) в org.springframework.boot.SpringApplication.run (SpringApplication.java:1248)

Файл log4j2.xml, который я использую, выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="info" name="someName" packages="com.somepackage.somename">
   <Appenders>
      <Console name="consoleAppender" target="SYSTEM_OUT">
         <Filters>
            <ThresholdFilter level="Debug" onMatch="ACCEPT" />
         </Filters>
         <JSONLayout complete="false" compact="true" eventEol="true" objectMessageAsJsonObject="true" includeStacktrace="true" stacktraceAsString="true" />
      </Console>
   </Appenders>
   <Loggers>
      <Root level="Debug">
         <AppenderRef ref="consoleAppender" />
      </Root>
   </Loggers>
</Configuration>
...