首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在spring-boot-admin中显示日志文件?

在Spring Boot Admin中显示日志文件,可以通过以下步骤实现:

  1. 配置日志文件路径:在Spring Boot应用的配置文件(如application.properties或application.yml)中,添加以下配置项,指定日志文件的路径和名称:logging.file.path=/path/to/logs logging.file.name=myapp.log
  2. 添加依赖:在项目的构建文件(如pom.xml)中,添加Spring Boot Admin的依赖项:<dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-starter-server</artifactId> <version>2.5.1</version> </dependency>
  3. 创建Spring Boot Admin配置类:创建一个Java类,用于配置Spring Boot Admin的相关设置。可以使用@EnableAdminServer注解启用Spring Boot Admin,并配置AdminServerPropertieslog-file属性为日志文件的路径和名称:import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration; import org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxProperties; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration; import org.springframework.boot.autoconfigure.jmx.JmxProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.logging.LoggingSystem; import org.springframework.cloud.autoconfigure.RefreshAutoConfiguration; import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; import org.springframework.context.annotation.Primary; import org.springframework.core.Ordered; import org.springframework.core.annotation.Order; import org.springframework.core.env.Environment; import org.springframework.core.io.ResourceLoader; import org.springframework.jmx.export.MBeanExporter; import org.springframework.jmx.export.annotation.AnnotationMBeanExporter; import org.springframework.jmx.export.assembler.MetadataMBeanInfoAssembler; import org.springframework.jmx.export.assembler.MBeanInfoAssembler; import org.springframework.jmx.export.assembler.SimpleReflectiveMBeanInfoAssembler; import org.springframework.jmx.export.naming.MetadataNamingStrategy; import org.springframework.jmx.export.naming.ObjectNamingStrategy; import org.springframework.jmx.export.naming.SelfNaming; import org.springframework.jmx.support.ConnectorServerFactoryBean; import org.springframework.jmx.support.MBeanServerFactoryBean; import org.springframework.jmx.support.RegistrationPolicy; import org.springframework.util.StringUtils;

import javax.management.MBeanServer;

import javax.management.MalformedObjectNameException;

import javax.management.ObjectName;

import java.io.File;

import java.io.IOException;

import java.lang.management.ManagementFactory;

import java.net.InetAddress;

import java.net.UnknownHostException;

import java.util.HashMap;

import java.util.Map;

import java.util.Properties;

@Configuration

@EnableConfigurationProperties({ JmxProperties.class, SpringApplicationAdminJmxProperties.class })

@ConditionalOnClass({ MBeanServer.class, AnnotationMBeanExporter.class })

@ConditionalOnProperty(prefix = "spring.application.admin", name = "enabled", matchIfMissing = true)

@Import(JmxAutoConfiguration.class)

public class SpringBootAdminConfig {

代码语言:txt
复制
   @Bean
代码语言:txt
复制
   @Primary
代码语言:txt
复制
   @ConditionalOnMissingBean(MBeanServer.class)
代码语言:txt
复制
   public MBeanServer mBeanServer() {
代码语言:txt
复制
       MBeanServerFactoryBean factory = new MBeanServerFactoryBean();
代码语言:txt
复制
       factory.setLocateExistingServerIfPossible(true);
代码语言:txt
复制
       factory.afterPropertiesSet();
代码语言:txt
复制
       return factory.getObject();
代码语言:txt
复制
   }
代码语言:txt
复制
   @Bean
代码语言:txt
复制
   @ConditionalOnMissingBean
代码语言:txt
复制
   public ObjectNamingStrategy objectNamingStrategy() {
代码语言:txt
复制
       MetadataNamingStrategy strategy = new MetadataNamingStrategy(mBeanServer());
代码语言:txt
复制
       strategy.setDefaultDomain("org.springframework.boot");
代码语言:txt
复制
       return strategy;
代码语言:txt
复制
   }
代码语言:txt
复制
   @Bean
代码语言:txt
复制
   @ConditionalOnMissingBean
代码语言:txt
复制
   public MBeanInfoAssembler mBeanInfoAssembler() {
代码语言:txt
复制
       return new SimpleReflectiveMBeanInfoAssembler();
代码语言:txt
复制
   }
代码语言:txt
复制
   @Bean
代码语言:txt
复制
   @ConditionalOnMissingBean
代码语言:txt
复制
   public AnnotationMBeanExporter mbeanExporter(ObjectNamingStrategy namingStrategy,
代码语言:txt
复制
                                                 MBeanInfoAssembler assembler) {
代码语言:txt
复制
       AnnotationMBeanExporter exporter = new AnnotationMBeanExporter();
代码语言:txt
复制
       exporter.setNamingStrategy(namingStrategy);
代码语言:txt
复制
       exporter.setAssembler(assembler);
代码语言:txt
复制
       exporter.setRegistrationPolicy(RegistrationPolicy.IGNORE_EXISTING);
代码语言:txt
复制
       return exporter;
代码语言:txt
复制
   }
代码语言:txt
复制
   @Bean
代码语言:txt
复制
   @ConditionalOnMissingBean
代码语言:txt
复制
   public ConnectorServerFactoryBean connectorServerFactoryBean(JmxProperties properties) {
代码语言:txt
复制
       ConnectorServerFactoryBean factoryBean = new ConnectorServerFactoryBean();
代码语言:txt
复制
       factoryBean.setServiceUrl(properties.getConnector());
代码语言:txt
复制
       return factoryBean;
代码语言:txt
复制
   }
代码语言:txt
复制
   @Bean
代码语言:txt
复制
   @ConditionalOnMissingBean
代码语言:txt
复制
   public SpringApplicationAdminJmxAutoConfiguration springApplicationAdminJmxAutoConfiguration(
代码语言:txt
复制
           JmxProperties jmxProperties, SpringApplicationAdminJmxProperties adminJmxProperties,
代码语言:txt
复制
           ResourceLoader resourceLoader, Environment environment) throws IOException {
代码语言:txt
复制
       SpringApplicationAdminJmxAutoConfiguration configuration = new SpringApplicationAdminJmxAutoConfiguration(
代码语言:txt
复制
               jmxProperties, adminJmxProperties, resourceLoader, environment);
代码语言:txt
复制
       configuration.setLoggingSystem(LoggingSystem.get(environment.getClassLoader()));
代码语言:txt
复制
       return configuration;
代码语言:txt
复制
   }
代码语言:txt
复制
   @Bean
代码语言:txt
复制
   @Order(Ordered.LOWEST_PRECEDENCE)
代码语言:txt
复制
   public SelfNaming selfNaming() {
代码语言:txt
复制
       return new SelfNaming() {
代码语言:txt
复制
           @Override
代码语言:txt
复制
           public ObjectName getObjectName(Object managedBean, String beanKey) throws MalformedObjectNameException {
代码语言:txt
复制
               Map<String, String> properties = new HashMap<>();
代码语言:txt
复制
               properties.put("type", "AdminApplication");
代码语言:txt
复制
               properties.put("name", "Spring Boot Admin");
代码语言:txt
复制
               properties.put("instance", getInstanceId());
代码语言:txt
复制
               properties.put("context", getContextPath());
代码语言:txt
复制
               properties.put("host", getHostName());
代码语言:txt
复制
               properties.put("port", getPort());
代码语言:txt
复制
               return ObjectNameManager.getInstance(properties);
代码语言:txt
复制
           }
代码语言:txt
复制
           private String getInstanceId() {
代码语言:txt
复制
               return System.getProperty("spring.application.admin.instance-id", "unknown");
代码语言:txt
复制
           }
代码语言:txt
复制
           private String getContextPath() {
代码语言:txt
复制
               return System.getProperty("server.servlet.context-path", "/");
代码语言:txt
复制
           }
代码语言:txt
复制
           private String getHostName() {
代码语言:txt
复制
               try {
代码语言:txt
复制
                   return InetAddress.getLocalHost().getHostName();
代码语言:txt
复制
               } catch (UnknownHostException ex) {
代码语言:txt
复制
                   return "unknown";
代码语言:txt
复制
               }
代码语言:txt
复制
           }
代码语言:txt
复制
           private String getPort() {
代码语言:txt
复制
               return System.getProperty("server.port", "unknown");
代码语言:txt
复制
           }
代码语言:txt
复制
       };
代码语言:txt
复制
   }
代码语言:txt
复制
   private static final class ObjectNameManager {
代码语言:txt
复制
       private static final String DOMAIN = "org.springframework.boot";
代码语言:txt
复制
       private static final String KEY_PROPERTY = "key";
代码语言:txt
复制
       private static final String DEFAULT_KEY = "default";
代码语言:txt
复制
       private static ObjectName getInstance(Map<String, String> properties) throws MalformedObjectNameException {
代码语言:txt
复制
           Properties props = new Properties();
代码语言:txt
复制
           props.putAll(properties);
代码语言:txt
复制
           String domain = props.getProperty("domain", DOMAIN);
代码语言:txt
复制
           String key = props.getProperty(KEY_PROPERTY, DEFAULT_KEY);
代码语言:txt
复制
           props.remove("domain");
代码语言:txt
复制
           props.remove(KEY_PROPERTY);
代码语言:txt
复制
           String name = String.format("%s:type=%s,%s", domain, key,
代码语言:txt
复制
                   StringUtils.collectionToDelimitedString(props.entrySet(), ","));
代码语言:txt
复制
           return ObjectName.getInstance(name);
代码语言:txt
复制
       }
代码语言:txt
复制
   }

}

代码语言:txt
复制
  1. 启动Spring Boot Admin服务器:在Spring Boot应用的入口类上添加@EnableAdminServer注解,启用Spring Boot Admin服务器功能:import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import de.codecentric.boot.admin.server.config.EnableAdminServer;

@SpringBootApplication

@EnableAdminServer

public class MyApplication {

代码语言:txt
复制
   public static void main(String[] args) {
代码语言:txt
复制
       SpringApplication.run(MyApplication.class, args);
代码语言:txt
复制
   }

}

代码语言:txt
复制
  1. 访问Spring Boot Admin控制台:启动Spring Boot应用后,访问Spring Boot Admin的控制台页面(默认为http://localhost:8080),可以在应用的详情页面中查看和下载日志文件。

注意:以上步骤是基于Spring Boot Admin 2.5.1版本的配置,具体步骤可能会因版本不同而有所变化。另外,以上配置只适用于显示单个应用的日志文件,如果需要显示多个应用的日志文件,可以参考Spring Boot Admin的文档进行配置。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【DB笔试面试511】如何在Oracle写操作系统文件日志

题目部分 如何在Oracle写操作系统文件日志? 答案部分 可以利用UTL_FILE包,但是,在此之前,要注意设置好UTL_FILE_DIR初始化参数。...在CLIENT_INFO列存放程序的客户端信息;MODULE列存放主程序名,包的名称;ACTION列存放程序包的过程名。该包不仅提供了设置这些列值的过程,还提供了返回这些列值的过程。...如何在存储过程暂停指定时间? DBMS_LOCK包的SLEEP过程。例如:“DBMS_LOCK.SLEEP(5);”表示暂停5秒。 DBMS_OUTPUT提示缓冲区不够,怎么增加?...采用命令“DBMS_OUTPUT.ENABLE(20000);”,另外,如果DBMS_OUTPUT的信息不能显示,那么需要设置SET SERVEROUTPUT ON。...如何在Oracle写操作系统文件日志? 可以利用UTL_FILE包,但是,在此之前,要注意设置好UTL_FILE_DIR初始化参数。

28.8K30

何在 Linux 实时监控日志文件

当你在你的 Linux 桌面、服务器或任何应用遇到问题时,你会首先查看各自的日志文件日志文件通常是来自应用的文本和信息流,上面有一个时间戳。它可以帮助你缩小具体的实例,并帮助你找到任何问题的原因。...一般来说,所有的日志文件都位于 /var/log 。这个目录包含以 .log 为扩展名的特定应用、服务的日志文件,它还包含单独的其他目录,这些目录包含其日志文件。.../log/dmesg 如果你想监控 http 或 sftp 或任何服务器,你也可以在这个命令监控它们各自的日志文件。...使用 lnav(日志文件浏览器) lnav Running lnav 是一个很好的工具,你可以用它来通过彩色编码的信息以更有条理的方式监控日志文件。在 Linux 系统,它不是默认安装的。...一旦安装,你可以简单地用管理员权限从终端运行 lnav,它将默认显示 /var/log 的所有日志并开始实时监控。

1.7K30
  • 【说站】如何在 Linux 实时监控日志文件

    当你在你的 Linux 桌面、服务器或任何应用遇到问题时,你会首先查看各自的日志文件日志文件通常是来自应用的文本和信息流,上面有一个时间戳。它可以帮助你缩小具体的实例,并帮助你找到任何问题的原因。...一般来说,所有的日志文件都位于/var/log 。这个目录包含以.log 为扩展名的特定应用、服务的日志文件,它还包含单独的其他目录,这些目录包含其日志文件。...log/dmesg 如果你想监控 http 或 sftp 或任何服务器,你也可以在这个命令监控它们各自的日志文件。...使用 Lnav(日志文件浏览器) lnav Running lnav 是一个很好的工具,你可以用它来通过彩色编码的信息以更有条理的方式监控日志文件。在 Linux 系统,它不是默认安装的。...一旦安装,你可以简单地用管理员权限从终端运行 lnav,它将默认显示/var/log 的所有日志并开始实时监控。

    67920

    何在博客的日志之间显示广告

    这篇文章将向你展示如何在 WordPress 主页上的日志之间放置 AdSense 代码(或者其他广告的代码)。同样的方法也可以用于在存档页面(包括分类和作者存档页面)放置广告。...在 WordPress ,用来给读者显示日志的主流程就是主循环(The Loop)(点击这里和这里查看更多信息)。...用编程术语来说就是一个 while () 循环,它能一篇一篇的显示日志,直到满足一个停止的条件(比如 WP 的设置了只在主页上显示15篇日志)或者判断是否还有日志。...找到标题为 'Index' 或者 'Main Index Template' (或者类似的名字)的链接并点击它 - 导入 index.php 文件。 在 index.php 文件,找到这一行: <?...我使用了 Semiologic Ad Spaces plugin 这个插件,它能让我通过放置一个简单标签来指示出在模板代码显示哪个广告代码块。

    56120

    何在VimVi显示行号

    默认情况下,Vim不显示行号,但可以轻松打开它们。Vim支持三种行编号模式,可帮助你浏览文件。除了标准的绝对行编号之外,Vim还支持相对行和混合行编号模式。...相对行号 启用相对行编号后,当前行显示为0,而当前行上方和下方的行将递增编号(1,2,3…等)。 相对行模式非常方便,因为Vim的许多操作(例如上/下移动和删除行)都作用于相对行号。...混合行号 在Vim 7.4及更高版本,同时启用绝对行号和相对行号会设置混合行号模式。 混合行编号与相对行编号相同,唯一的区别是当前行而不是显示0表示其绝对行号。...永久设置 如果希望每次启动Vim时都显示行号,请在.vimrc(Vim配置文件添加适当的命令。...例如,要启用绝对行编号,应添加以下内容: > vim ~/.vimrc :set number 结论 要在Vim显示行号,请使用:set number命令表示绝对行号,使用:set relativenumber

    3.5K10

    何在 Pytest 添加日志记录

    本文将介绍如何在 Pytest 添加日志记录,以便更好地理解测试执行过程的细节和问题。...pytest.ini我们之前有介绍过pytest.ini文件的使用,可以帮助我们更加方便的执行测试用例,pytest.ini中有单独为log日志增加的一些信息,如下图:我们可以对pytest.ini文件做出如下配置...log_cli_date_format = %Y-%m-%d %H:%M:%S含义如下:log_cli = True :表示是否实时打开log监测,默认为Falselog_cli_level : 表示监测log日志等级显示...log_cli_format: 表示输出log日志显示格式log_cli_date_format: 表示显示log时间运行用例在我们创建了pytest.ini文件之后,在测试用例编写时,我们需要导入logging...Pytest 添加日志记录,以便更好地理解和调试测试代码。

    14910

    何在iPhone设备查看崩溃日志

    ​ 目录 如何在iPhone设备查看崩溃日志 摘要 引言 导致iPhone设备崩溃的主要原因是什么?...使用克魔助手查看iPhone设备的崩溃日志 奔溃日志分析 总结 摘要 本文介绍了如何在iPhone设备查看崩溃日志,以便调查崩溃的原因。我们将展示三种不同的方法,包括使用克魔助手查看崩溃日志。...硬盘故障可能导致iPhone设备无法打开文件,同时也会影响计算机文件。 内存故障:如果你的系统的RAM出现故障,iPhone设备将难以从内存检索数据。...操作如下: 打开克魔助手,并选择需要查看的奔溃日志。 2.点击“导出日志”,即可生成一个包含奔溃日志文件夹,便于提交给开发团队进行分析。...PS:数据连接时,先将 iPhone 通过数据线连接上电脑,iOS 手机上一定要信任这次连接,(开启WiFi调试时,无需数据线) 开 ​ 总结 本文介绍了如何在iPhone设备查看崩溃日志

    44510

    Hadoop集群日志文件

    Hadoop存在多种日志文件,其中master上的日志文件记录全面信息,包括slave上的jobtracker与datanode也会将错误信息写到master。...而slave日志主要记录完成的task任务信息。...2、master主要有2种日志,分别以log与out作后缀,其中每一个守护进程都会产生这2个日志jobtracker/ namenode/ tasktracker/ datanode均会分别产生这...这2个文件均是每天生成一个。 3、log日志文件通过log4j记录的,大部分应用程序的日志消息都写到该日志文件,故障诊断的首要步骤即为检查该文件。...【此日志文件最重要】 out日志文件记录标准输出和标准错误日志,由于大多日志均使用log4j输出至log日志文件,因此此文件很小或者为空。系统仅保留最新的5个日志

    1.4K10

    何在Ubuntu 16.04上使用Logrotate管理日志文件

    在一个标准的安装下,你应该已经在这里所拥有的文件进行系统的基本工具,apt,dpkg,rsyslog等等。.../var/log/apt/目录两个不同日志文件的配置块:term.log和history.log。...未在这些配置块设置的任何选项将继承默认值或设置的值/etc/logrotate.conf。为apt日志设置的选项是: rotate 12:保留十二个旧日志文件。 monthly:每月轮换一次。...由于此配置将匹配example-app目录的两个日志文件,因此指定的脚本postrotate将在没有此选项的情况下运行两次。...我们在之前的步骤已经看到了所有这些选项,但让我们总结一下:此配置将每小时轮换文件,压缩并保留二十四个旧日志并创建一个新的日志文件来替换轮换的日志文件

    2K50

    何在Python实现高效的日志记录

    日志记录是软件开发的重要组成部分,它可以帮助我们监控程序运行状态、诊断问题和优化性能。本文将详细介绍如何在Python实现高效的日志记录,并提供详细的代码示例。  ...`logging`模块提供了灵活的配置选项,可以轻松地将日志记录到文件、控制台或其他输出设备。  2.配置logging模块  首先,我们需要配置`logging`模块以满足我们的需求。...我们设置了日志级别为`DEBUG`,定义了日志格式,并添加了两个日志处理器:一个将日志记录到文件`app.log`,另一个将日志输出到控制台。  ...None  else:  logger.debug("Division successful")  return result  divide(10,2)  divide(10,0)  ```  在这个示例,...elapsed_time=time.time()-start_time  logger.info(f"slow_function tookseconds to complete")  ```  在这个示例

    40871

    何在Python 更优雅的记录日志

    作者:崔庆才 来源:进击的coder 在 Python ,一般情况下我们可能直接用自带的 logging 模块来记录日志,包括我之前的时候也是一样。..., LOG_FORMAT 配置了日志每个条目输出的基本格式,另外还有一些连接的必要信息。...创建 logger 之后,可以为其添加各种对应的 Handler,输出到控制台就用 StreamHandler,输出到文件就用 FileHandler 或 RotatingFileHandler,输出到...•sink 可以直接传入一个 str 字符串或者 pathlib.Path 对象,其实就是代表文件路径的,如果识别到是这种类型,它会自动创建对应路径的日志文件并将日志输出进去。...rotation 配置 用了 loguru 我们还可以非常方便地使用 rotation 配置,比如我们想一天输出一个日志文件,或者文件太大了自动分隔日志文件,我们可以直接使用 add 方法的 rotation

    1.1K50
    领券