SpringBootAdmin 获取日志文件失败。Cannot read properties of undefined (reading 'split')

SpringBootAdmin 获取日志文件失败。Cannot read properties of undefined (reading 'split')

img

yml日志配置:

img

logback.xml配置:

img

网上查了下,把这块注释掉就可以了,但是不知道为什么,而且这块代码是有用的,不能注释,所以就不知道该怎么解决这个问题了,还请大家指点

img

这个是因为fastJson的消息处理会把日志内容包装成一个JSON,本来应该接受的消息内容是String,所以题主需要把medisTypeList.add(MediaType.ALL) 这句代码去掉,fastjson应该只处理返回类型为JSON格式的消息

路径换成英文试试

引用chatGPT作答,错误信息"request failed with status code 416"通常表示服务器无法提供请求的数据范围或无法满足请求。

在SpringBootAdmin中获取日志文件时,此错误可能表示日志文件中不存在请求的数据范围或日志文件不可访问。以下是此问题的可能原因和解决方法:

1.未找到日志文件:确保日志文件存在于指定的位置并且SpringBootAdmin应用程序可以访问它。检查SpringBootAdmin配置文件中的日志文件路径和文件名。

2.日志文件大小限制:SpringBootAdmin具有名为spring.boot.admin.monitoring.logfile.max-size的配置属性,它限制可以显示的日志文件的最大大小。如果日志文件超过此限制,SpringBootAdmin可能无法获取日志文件并返回错误。增加此属性的值以容纳更大的日志文件。

3.日志文件格式不正确:SpringBootAdmin仅支持以下格式的日志文件:Logback、Log4j和Java Util Logging。确保您正在尝试访问的日志文件是这些格式之一。

4.日志文件正在轮换:如果正在轮换日志文件,则SpringBootAdmin可能无法获取日志文件并返回错误。检查日志文件是否正在轮换,并配置SpringBootAdmin以访问最新的日志文件。

5.权限不足:确保SpringBootAdmin应用程序具有访问日志文件的足够权限。检查文件权限,并确保运行SpringBootAdmin应用程序的用户具有访问日志文件所需的权限。

通过确定错误的具体原因并应用适当的解决方法,您应该能够解决SpringBootAdmin中的"request failed with status code 416"错误。

以下答案由GPT-3.5大模型与博主波罗歌共同编写:
HTTP状态码416表示Range Not Satisfiable(范围不在可接受范围内),通常是请求头中的“range”字段不正确导致的。在Spring Boot Admin中获取日志文件失败并返回416错误可能是因为请求的range范围不正确。

要解决此问题,请检查Spring Boot应用程序和Spring Boot Admin应用程序的日志配置。确保日志配置中的路径和名称正确,并且Spring Boot Admin应用程序中的设置正确。

以下是一个可能的解决方案:

  1. 检查Spring Boot应用程序的日志配置,确保路径和名称正确:

    logging:
      file:
        name: myapp.log
        path: /var/logs/myapp/
    
  2. 检查Spring Boot Admin应用程序的设置,确保设置正确:

    spring:
      boot:
        admin:
          client:
            log-file-path: /var/logs/myapp/
            log-file-name: myapp.log
    

如果以上解决方案不起作用,您可以尝试在Spring Boot Admin客户端的配置文件中设置如下参数:

spring:
  boot:
    admin:
      client:
        metadata:
          value:
            loggers:
              - name: ROOT
                level: DEBUG
                additivity: false
                stdout: true

这将禁用Spring Boot Admin中的日志下载,并将日志记录到控制台中。如果这解决了请求失败问题,那么问题可能是在日志下载期间请求的范围没有正确设置。
如果我的回答解决了您的问题,请采纳!

根据问题描述,猜测是因为SpringBootAdmin在获取日志文件时需要读取“split”属性,但是这个属性没有被定义。通常情况下,在Spring Boot应用程序中,日志文件存储在“/var/log/messages”目录下,每个日志条目都有一个对应的文件名。

为了解决这个问题,可以尝试在SpringBootAdmin的配置文件中添加以下属性:

spring:
  application:
    name: SpringBootAdmin
    log4j:
      level:
        org:
          application:
            error:
              level: error

上述配置将设置“log4j”属性的级别为“error”,这将让日志文件输出到“/var/log/messages/error”目录下。

接下来,可以尝试在logback.xml文件中中添加以下属性:

<configuration>
  <property name="split" value="mysplit" />
</configuration>

上述配置将定义一个名为“mysplit”的日志文件split属性,并将其设置为SpringBootAdmin需要读取的值。

最后,可以尝试重新启动Spring Boot应用程序,并检查日志文件是否正确被创建和存储。