我们已将 Spring Boot 和 Spring Cloud 升级到最新版本,现在在启动有关 logback 配置的服务之一时出现错误
启动应用程序时出现此错误。 错误消息也指的是什么属性?
现在开始申请... 日志系统无法使用“null”的配置进行初始化 java.lang.IllegalStateException:检测到 Logback 配置错误: ch.qos.logback.core.model.processor.PropertyModelHandler 中出现错误 - 在元素中,必须单独设置“file”属性,或单独设置“resource”元素,或同时设置“name”和“value”属性。 ch.qos.logback.core.model.processor.PropertyModelHandler 中出现错误 - 在元素中,必须单独设置“file”属性,或单独设置“resource”元素,或同时设置“name”和“value”属性。 在org.springframework.boot.logging.logback.LogbackLoggingSystem.reportConfigurationErrorsIfNecessary(LogbackLoggingSystem.java:260) 在org.springframework.boot.logging.logback.LogbackLoggingSystem.loadConfiguration(LogbackLoggingSystem.java:247) 在 org.springframework.boot.logging.AbstractLoggingSystem.initializeWithConventions(AbstractLoggingSystem.java:80) 在 org.springframework.boot.logging.AbstractLoggingSystem.initialize(AbstractLoggingSystem.java:60) 在 org.springframework.boot.logging.logback.LogbackLoggingSystem.initialize(LogbackLoggingSystem.java:187) 在 org.springframework.boot.context.logging.LoggingApplicationListener.initializeSystem(LoggingApplicationListener.java:332) 在 org.springframework.boot.context.logging.LoggingApplicationListener.initialize(LoggingApplicationListener.java:298) 在org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationEnvironmentPreparedEvent(LoggingApplicationListener.java:246) 在 org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationEvent(LoggingApplicationListener.java:223) 在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:143) 在org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:131) 在 org.springframework.boot.context.event.EventPublishingRunListener.multicastInitialEvent(EventPublishingRunListener.java:136) 在 org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:81) 在 org.springframework.boot.SpringApplicationRunListeners.lambda$environmentPrepared$2(SpringApplicationRunListeners.java:64) 在 java.base/java.lang.Iterable.forEach(来源未知)
logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property name="LOG_DIR" value="./build/run/logs" />
<property name="KIBANA_LOGGING_PROFILE_NAME" value="kibana" />
<springProperty scope="context" name="LOG_LEVEL"
source="logback.appLogLevel" defaultValue="trace" />
<springProperty scope="context"
name="LOG_LEVEL_DOMAIN" source="logback.appLogLevel.domain"
defaultValue="debug" />
<springProperty scope="context" name="LOG_LEVEL_JWT"
source="logback.appLogLevel.jwt" defaultValue="debug" />
<springProperty scope="context"
name="CLIENT_LOG_LEVEL" source="logback.clientLogLevel"
defaultValue="trace" />
<springProperty scope="context"
name="ELASTIC_SEARCH_SERVER_URL"
source="logback.elasticsearch.serverUrl"
defaultValue="http://localhost:9200" />
<appender name="Console"
class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>%black(%d{ISO8601}) %highlight(%-5level)
[%blue(%t)]
%yellow(%C{1}): %msg%n%throwable</Pattern>
</layout>
</appender>
<appender name="RollingFile"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_DIR}/spring-boot-logger.log</file>
<encoder
class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>%d %p %C{1} [%t] %m%n</Pattern>
</encoder>
<rollingPolicy
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_DIR}/archived/spring-boot-logger-%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
</appender>
<appender name="ClientRollingFile"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_DIR}/client-spring-boot-logger.log</file>
<encoder
class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>%d %p %C{1} [%t] %m%n</Pattern>
</encoder>
<rollingPolicy
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_DIR}/archived/client-spring-boot-logger-%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
</appender>
<springProfile name="${KIBANA_LOGGING_PROFILE_NAME}">
<appender name="ElasticSearch"
class="com.internetitem.logback.elasticsearch.ElasticsearchAppender">
<url>${ELASTIC_SEARCH_SERVER_URL}/_bulk</url>
<index>logs-%date{yyyy-MM-dd}</index>
<type>tester</type>
<loggerName>elastic-search-logger</loggerName>
<errorLoggerName>elastic-search-error-logger
</errorLoggerName>
<connectTimeout>30000</connectTimeout>
<errorsToStderr>false</errorsToStderr>
<includeCallerData>false</includeCallerData>
<logsToStderr>false</logsToStderr>
<maxQueueSize>104857600</maxQueueSize>
<maxRetries>3</maxRetries>
<readTimeout>30000</readTimeout>
<sleepTime>250</sleepTime>
<rawJsonMessage>false</rawJsonMessage>
<includeMdc>true</includeMdc>
<maxMessageSize>100</maxMessageSize>
<authentication
class="com.internetitem.logback.elasticsearch.config.BasicAuthentication" />
<properties>
<property>
<name>host</name>
<value>${HOSTNAME}</value>
<!-- <allowEmpty>false</allowEmpty> -->
</property>
<property>
<name>severity</name>
<value>%level</value>
</property>
<property>
<name>thread</name>
<value>%thread</value>
</property>
<property>
<name>stacktrace</name>
<value>%ex</value>
</property>
<property>
<name>logger</name>
<value>%logger</value>
</property>
</properties>
<headers>
<header>
<name>Content-Type</name>
<value>application/json</value>
</header>
</headers>
<filter
class="ch.qos.logback.classic.filter.LevelFilter">
<level>DEBUG</level>
<onMatch>DENY</onMatch>
</filter>
<filter
class="ch.qos.logback.classic.filter.LevelFilter">
<level>TRACE</level>
<onMatch>DENY</onMatch>
</filter>
</appender>
<logger name="elastic-search-error-logger" level="INFO"
additivity="false">
<appender-ref ref="RollingFile" />
<appender-ref ref="Console" />
</logger>
<logger name="elastic-search-logger" level="INFO"
additivity="false">
<appender name="ES_FILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>%msg</pattern>
</encoder>
</appender>
</logger>
<logger name="com.acme.application" level="${LOG_LEVEL}">
<appender-ref ref="ElasticSearch" />
</logger>
</springProfile>
<logger name="com.acme.applicationclient"
level="${CLIENT_LOG_LEVEL}" additivity="false">
<appender-ref ref="ClientRollingFile" />
<appender-ref ref="Console" />
<springProfile
name="${KIBANA_LOGGING_PROFILE_NAME}">
<appender-ref ref="ElasticSearch" />
</springProfile>
</logger>
<logger name="com.acme.application.authentication.jwt"
level="${LOG_LEVEL_JWT}" additivity="false">
<appender-ref ref="ClientRollingFile" />
<appender-ref ref="Console" />
<springProfile
name="${KIBANA_LOGGING_PROFILE_NAME}">
<appender-ref ref="ElasticSearch" />
</springProfile>
</logger>
<logger
name="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"
level="TRACE" additivity="false">
<appender-ref ref="Console" />
<appender-ref ref="ClientRollingFile" />
</logger>
<logger name="com.acme.application.domain"
level="${LOG_LEVEL_DOMAIN}" additivity="false">
<appender-ref ref="Console" />
</logger>
<root level="info">
<appender-ref ref="RollingFile" />
<appender-ref ref="Console" />
</root>
</configuration>
似乎不再维护弹性搜索适配器,并且保留使用 < property > 的弹性属性。 使用 fork 修复https://github.com/agido-malter/logback-elasticsearch-appender