当前位置: 首页 > 知识库问答 >
问题:

%Spring Boot日志中的PARSER_ERROR[wex]

颜嘉誉
2023-03-14

我的日志文件中偶尔会出现以下错误字符串。我正在使用spring boot运行一个spring云应用程序。我使用了一个包含另一个配置文件的日志回溯配置文件。春开机版本为v1.2.3(春云1.0.1)。

%PARSER_ERROR[wex]2015-06-01 12:30:22.180 调试 6833 --- [http-nio-9000-exec-1] ...日志消息的其余部分

我看到了这个条目(Spring Boot - logback PARSER_ERROR),但是ti似乎不适用。

logback。xml文件是:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <property name="LOG_FILE" value="logs/myservice.log"/>

    <!-- the rollover settings with mean a max size per log of 100Mb and 7 days -->
    <property name="MAX_HISTORY" value="7"/>
    <property name="MAX_FILE_SIZE" value="100MB"/>


    <!-- the specific loggers -->
    <logger name="com.companyx" level="DEBUG"/>
    <logger name="org.springframework" level="ERROR"/>
    <logger name="org.springframework.security.oauth2" level="INFO"/>
    <logger name="org.springframework.integration" level="OFF"/>
    <logger name="org.springframework.oxm" level="OFF"/>
    <logger name="org.springframework.http" level="ERROR"/>

    <logger name="com.netflix.discovery" level="OFF"/>
    <logger name="com.netflix.eureka.util.AwsAsgUtil" level="OFF"/>

    <logger name="com.mangofactory.swagger.scanners" level="OFF"/>

    <include resource="com/companyx/services/common/logging/baselog.xml"/>

</configuration>

包含的baselog.xml文件是:

<?xml version="1.0" encoding="UTF-8"?>
<included>

    <!-- turn on JMX configuration -->
    <jmxConfigurator />

    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
    <conversionRule conversionWord="wex"
                    converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>

    <property name="CONSOLE_LOG_PATTERN"
              value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS, Zulu}){faint} %clr(%5p) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n%wex"/>
    <property name="FILE_LOG_PATTERN"
              value="%d{yyyy-MM-dd HH:mm:ss.SSS, Zulu} %5p ${PID:- } --- [%t] %-40.40logger{39} : %m%n%wex"/>

    <appender name="DEBUG_LEVEL_REMAPPER" class="org.springframework.boot.logging.logback.LevelRemappingAppender">
        <destinationLogger>org.springframework.boot</destinationLogger>
    </appender>

    <logger name="org.apache.catalina.startup.DigesterFactory" level="ERROR"/>
    <logger name="org.apache.catalina.util.LifecycleBase" level="ERROR"/>
    <logger name="org.apache.coyote.http11.Http11NioProtocol" level="WARN"/>
    <logger name="org.apache.sshd.common.util.SecurityUtils" level="WARN"/>
    <logger name="org.apache.tomcat.util.net.NioSelectorPool" level="WARN"/>
    <logger name="org.crsh.plugin" level="WARN"/>
    <logger name="org.crsh.ssh" level="WARN"/>
    <logger name="org.eclipse.jetty.util.component.AbstractLifeCycle" level="ERROR"/>
    <logger name="org.hibernate.validator.internal.util.Version" level="WARN"/>
    <logger name="org.springframework.boot.actuate.autoconfigure.CrshAutoConfiguration" level="WARN"/>
    <logger name="org.springframework.boot.actuate.endpoint.jmx" additivity="false">
        <appender-ref ref="DEBUG_LEVEL_REMAPPER"/>
    </logger>
    <logger name="org.thymeleaf" additivity="false">
        <appender-ref ref="DEBUG_LEVEL_REMAPPER"/>
    </logger>

    <!-- declare the different appenders -->

    <!-- declare the appender that writes to the console -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
            <charset>utf8</charset>
        </encoder>
    </appender>

    <!-- declare the appender that writes to the log file -->
    <appender name="FILE"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <encoder>
            <pattern>${FILE_LOG_PATTERN}</pattern>
        </encoder>
        <file>${LOG_FILE}</file>

        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- daily rollover -->
            <fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}.log.gz</fileNamePattern>
            <!-- keep 30 days' worth of history -->
            <maxHistory>${MAX_HISTORY}</maxHistory>
        </rollingPolicy>

        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>${MAX_FILE_SIZE}</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <maxHistory>${MAX_HISTORY}</maxHistory>
        </rollingPolicy>

    </appender>


    <!-- default logging levels, unless we overwrite then use INFO-->
    <root>
        <level value="INFO"/>
        <appender-ref ref="FILE"/>
        <appender-ref ref="CONSOLE"/>
    </root>

    <!-- application overrides will be added in files that include this one -->

</included>

共有3个答案

壤驷建德
2023-03-14

在我们的例子中,问题出在我们正在使用的ELK系统中。我们运行了一个Elasticsearch-Logstash-Kibana日志收集系统,收集日志的日志存储代理在传递日志记录时将%PARSER_ERROR%[wex]插入到日志记录中。

在我们得到了公认的解决方法后,问题就消失了。

柴飞扬
2023-03-14

在我的情况下,问题是由我从另一个项目复制的以下格式引起的(它工作得很好)

%m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}

将格式更改为

%m%n${LOG_EXCEPTION_CONVERSION_WORD:-%rEx}

我们不再收到此错误。

奇怪的是,这两个项目都使用logback-core-1.1.8和logback-Classic-1.1.8,都在slf4j之上。唯一的区别是wEx格式用于Spring Boot项目,而rEx格式用于较旧的Spring 3项目。

闻人哲茂
2023-03-14

请在您的Logback.xml中包含Spring提供的default.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/defaults.xml" />

如果你看一下org/spring framework/boot/logging/log back/defaults . XML第9行,你会看到< code>wex是一个由Spring Boot定义的自定义< code>conversionRule,使用一个Spring Boot类,所以如果没有在< code>logback.xml中定义的conversionRule和类路径中的那个类,它就不能工作。

任何不使用Spring启动的人都可以使用开箱即用的异常转换规则之一,例如 %ex:https://logback.qos.ch/manual/layouts.html#conversionWord

 类似资料:
  • SpringBoot默认有日志输出 2017-02-27 16:04:06.644 INFO 15384 --- [ main] com.clsaa.edu.springboot.App : Starting App on eggyer with PID 15384 (D:\Data\MyCode\codeMaven\learn_springboot004\target\classes start

  • 我在SpringBoot中使用logback,但无法删除旧的日志文件。 我在logback-spring.xml文件中定义了以下appender: 即使我设置了“MaxHistory”和“CleanHistoryonStart”,超过10天的日志文件也不会被删除。既不是翻转也不是启动。

  • 本文向大家介绍SpringBoot中logback日志保存到mongoDB的方法,包括了SpringBoot中logback日志保存到mongoDB的方法的使用技巧和注意事项,需要的朋友参考一下 Springboot默认集成的就是logback,logback相对来说是优秀于log4j的,log4j2也是参考了logback的设计。 自定义Appender非常简单,继承一下AppenderBas

  • 我按照这里的教程SpringEureka教程创建了一个基本的Eureka注册表jar应用程序。下一步是将日志记录更改为log4j2,这样我就可以使用Spring log4j2指南中的指南获得一个滚动文件。 我遇到的问题是,当我运行应用程序时,没有抛出错误,但是 eureka服务器日志仍会输出到控制台 已创建自定义日志输出文件“eureka.log”,但该文件为空 我编写的任何自定义日志,例如

  • 本文向大家介绍浅谈SpringBoot是如何实现日志的,包括了浅谈SpringBoot是如何实现日志的的使用技巧和注意事项,需要的朋友参考一下 前言 休息日闲着无聊看了下 SpringBoot 中的日志实现,把我的理解跟大家说下。 门面模式 说到日志框架不得不说门面模式。门面模式,其核心为外部与一个子系统的通信必须通过一个统一的外观对象进行,使得子系统更易于使用。用一张图来表示门面模式的结构为:

  • 本文向大家介绍springboot+log4j.yml配置日志文件的方法,包括了springboot+log4j.yml配置日志文件的方法的使用技巧和注意事项,需要的朋友参考一下 一,Maven 依赖 pom.xml配置 1, 去掉默认日志,以便切换到log4j2的日志依赖 2, 然后添加如下两个日志依赖 二,在工程根目录下添加 lo4g2.yml 配置文件 2, 配置文件内容 三,在工程根目录下