带有 log4j2 的 SpringBootApplication 在启动时抛出错误

问题描述 投票:0回答:1

我使用 springboot 的属性配置了 log4j2.yml:

Properties:
    property:
      - name: LOGSTASH_HOST
        value: ${spring:logstash.server.host}
      - name: LOGSTASH_PORT
        value: ${spring:logstash.server.port}
      - name: APPLICATION_NAME
        value: ${lower:${spring:spring.application.name:-spring}}

如果我启动我的应用程序,我会收到一堆错误消息:

错误 StatusConsoleListener 解析器无法查找 spring:logstash.server.host java.lang.IllegalStateException:无法从 LoggerContext 获取 Spring 环境

错误 StatusConsoleListener 无法写入流 TCP:localhost:9800 用于附加器 LOGSTASH org.apache.logging.log4j.core.appender.AppenderLoggingException:写入 TCP 时出错:localhost:9800:套接字在 org.apache.logging.log4j.core.net.TcpSocketManager.write(TcpSocketManager.java:214) 不可用

直到 springboot 启动才找到服务器主机,这需要几秒钟,之后日志记录工作正常并且不再有错误消息。

如何将 log4J2 配置为在 springboot 启动之后或启动时启动,并且不发送垃圾邮件错误消息。

我尝试排除 springr boot starter 登录 pom:

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-log4j2</artifactId>
        </dependency>

或者我尝试过后备主机和端口:

Properties:
  property:
    - name: LOGSTASH_HOST
      value: "${sys:LOGSTASH_HOST:-${env:LOGSTASH_HOST:-localhost}}" # Prefer system property, then env variable, fallback to 'localhost'
    - name: LOGSTASH_PORT
      value: "${sys:LOGSTASH_PORT:-${env:LOGSTASH_PORT:-5044}}" # Prefer system property, then env variable, fallback to '5044'
    - name: APPLICATION_NAME
      value: "${sys:spring.application.name:-${env:spring_application_name:-default-application}}" # System property, env variable, fallback
spring-boot log4j2
1个回答
0
投票

尝试将 log4j2.yml 文件重命名为 log4j2-spring.yml 这是自 3.0.0 以来文档中描述的一种可能性:https://docs.spring.io/spring-boot/docs/3.2.4/reference/html/features.html#features.logging.log4j2-extensions

由于标准的log4j2.xml配置文件加载得太早,因此无法在其中使用扩展。您需要使用 log4j2-spring.xml 或定义logging.config属性。

© www.soinside.com 2019 - 2024. All rights reserved.