Spring Boot 把配置文件和日志文件放到jar外部

Step 1:创建Spring Boot项目

首先,我们创建一个Spring Boot项目。可以使用Spring Intializr或者自行使用maven创建。这里我们使用Spring Intializr,选择下面的选项:

  • 项目名称:spring-boot-external-config-logs
  • 项目类型:Maven Project
  • 依赖:Spring Boot DevTools、Spring Web、Spring Boot Configuration Processor

其中,Spring Boot DevTools是可选的,但是它可以在应用程序重新启动时加快开发人员的反应时间。

完成后,下载项目并导入IDE。

Step 2:添加application.properties文件

Spring Boot可以从多个地方加载配置文件。其中之一是在项目根目录下的application.properties文件。

现在,我们需要在项目中添加一个application.properties文件,并从其中读取配置。

首先,在src/main/resources目录下创建一个新文件夹config。在config文件夹中,创建一个application.properties文件,添加以下内容:

logging.file.name=logs/app.log

这将配置Spring Boot将日志文件写入到“logs/app.log”文件中,而不是默认情况下将日志文件写入到控制台。请注意,创建logs目录是必需的。

然后,在项目中创建一个名为HelloController的简单控制器来检索配置。这里是代码:

@RestController
public class HelloController {

    @Value("${logging.file.name}")
    private String logFileName;

    @GetMapping("/logFileName")
    public String getLogFileName() {
        return logFileName;
    }
}

上面的代码中@Value("${logging.file.name}")注释将logFileName字段从application.properties文件中注入为Spring Bean。

Step 3:外部化配置文件

现在,我们将演示如何将配置文件放到jar文件之外并从外部读取。这是一个两步过程。

第一步,将application.properties文件放到jar文件之外。

  • 在项目的根目录中,创建一个文件夹config,并将application.properties文件移至该文件夹中。
  • 在项目的根目录中,创建一个文件夹logs,并使用之前在application.properties文件中配置的文件名作为文件名,例如logs/app.log。

现在,我们已经将配置和日志文件从jar文件中拆分出来了。

第二步,加载外部配置文件。

这可以通过将以下内容添加到启动命令中来实现:

java -jar spring-boot-external-config-logs.jar --spring.config.location=file:/path/to/config/

其中,/path/to/config/是application.properties文件所在的文件夹的绝对路径。

第三步,在HelloController类中添加一个新的URI来读取从命令行传递的配置。

@RestController
public class HelloController {

    @Value("${logging.file.name}")
    private String logFileName;

    @Value("${external.config.path}")
    private String externalConfig;

    @GetMapping("/logFileName")
    public String getLogFileName() {
        return logFileName;
    }

    @GetMapping("/externalConfigPath")
    public String getExternalConfigPath() {
        return externalConfig;
    }
}

然后我们访问外部配置文件:

http://localhost:8080/externalConfigPath

结果应该是:file:/path/to/config/

这表明外部配置文件已经正确加载。

示例1:

  • 可以假设有这样的一个Spring Boot项目:

xml
<groupId>com.spring.boot</groupId>
<artifactId>spring-boot-demo</artifactId>
<version>1.0-SNAPSHOT</version>

  • 可以在项目根目录下创建一个“config”目录,并在该目录下创建“application.properties”文件,并添加以下内容:

xml
server.port=8081

  • 可以使用以下命令启动Spring Boot应用:

java
java -jar target/spring-boot-demo-1.0-SNAPSHOT.jar --spring.config.location="file:./config/application.properties"

在启动后,Spring Boot应用将使用指定的端口(即“8081”)启动。

示例2:

  • 可以假设有这样的一个Spring Boot项目:

xml
<groupId>com.spring.boot</groupId>
<artifactId>spring-boot-demo</artifactId>
<version>1.0-SNAPSHOT</version>

  • 可以在项目根目录下创建一个“config”目录,并在该目录下创建“logback.xml”文件,并添加以下内容:

```xml



logs/info.log
[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %logger{15} - %msg%n








```

  • 然后,可以使用以下命令启动Spring Boot应用程序:

java
java -Dlogging.config="file:./config/logback.xml" -jar target/spring-boot-demo-1.0-SNAPSHOT.jar

在启动后,Spring Boot应用程序将使用指定的日志配置。例如,在这种情况下,Spring Boot应用程序将向“logs/info.log”文件写入日志。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Spring Boot 把配置文件和日志文件放到jar外部 - Python技术站

(0)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • NV首个WHQL认证Win10显卡驱动来了 版本号为352.84(附下载地址)

    NV首个WHQL认证Win10显卡驱动攻略 简介 NVIDIA(NV)最新发布了首个通过WHQL认证的Win10显卡驱动,版本号为352.84。这个驱动版本为用户提供了更好的性能和稳定性,同时修复了一些已知的问题。本攻略将详细介绍如何下载和安装这个驱动,并提供两个示例说明。 步骤 步骤1:下载驱动程序 首先,你需要下载NV首个WHQL认证Win10显卡驱动的…

    other 2023年8月3日
    00
  • 如何查看linux硬件配置信息

    如何查看Linux硬件配置信息 在Linux系统中,您可以使用一些命令来查看硬件配置信息。以下是使用Linux命令查看硬件配置信息的完整攻略。 1. 使用lshw命令 lshw是一个用于显示硬件信息的命令工具。您可以使用以下命令安装lsh: sudo apt-get install lshw 安装完成后,您可以使用以下命令查看硬件配置信息: sudo lsh…

    other 2023年5月6日
    00
  • SpringFactoriesLoader类作用详解

    SpringFactoriesLoader类作用详解 1. 简介 SpringFactoriesLoader是Spring框架中的一个工具类,用于加载在META-INF/spring.factories文件中定义的工厂类。它可以帮助开发者更方便地扩展Spring框架,并提供了一种可插拔的机制,使得系统的功能可以通过配置来动态决定。 2. 加载过程 Sprin…

    other 2023年6月28日
    00
  • Android 删除指定包名的App实例代码

    当你想要删除指定包名的Android应用程序实例时,你可以按照以下步骤进行操作: 获取应用程序包管理器(PackageManager)的实例: PackageManager packageManager = getPackageManager(); 使用包管理器获取指定包名的应用程序信息: String packageName = \"com.ex…

    other 2023年9月7日
    00
  • Win7右键“新建”选项不见从菜单上消失的解决方法

    下面是解决方法的完整攻略: 问题背景 当在Win7系统中右键点击桌面或某个文件夹时,点击“新建”选项,却发现没有相应的选项出现在弹出的菜单中,或者出现了只有一些选项的情况,这就是所谓的“Win7右键‘新建’选项不见”的问题。 解决方法 方法一:修改注册表项 按下Win + R,打开运行窗口,输入regedit,进入注册表编辑器。 找到以下路径:HKEY_CL…

    other 2023年6月27日
    00
  • 侠客风云传妹子男主结局是什么 侠客风云传全结局图文介绍

    侠客风云传妹子男主结局攻略 《侠客风云传》是一款受欢迎的角色扮演游戏,玩家在游戏中扮演男主角,与各种妹子展开互动,并最终决定与哪位妹子结局。以下是关于妹子男主结局的详细攻略。 1. 收集好感度 在游戏中,与每个妹子互动可以提高她们对男主角的好感度。好感度是影响结局的重要因素,因此玩家需要与妹子进行对话、完成任务、赠送礼物等方式来提高好感度。每个妹子都有不同的…

    other 2023年7月28日
    00
  • Vue组件之自定义事件的功能图解

    Vue组件之自定义事件的功能图解 在Vue组件中,有时需要让子组件与父组件相互通信,可以通过自定义事件来实现。本文将详细讲解Vue组件中的自定义事件功能,让您轻松掌握自定义事件的使用。 前置知识 在使用自定义事件之前,我们需要了解以下几个概念: 父子组件通信:Vue组件中,父组件可以对子组件传递数据,子组件也可以通过props属性接受父组件传递的数据。 组件…

    other 2023年6月25日
    00
  • C++ 数据结构链表的实现代码

    当使用C++编程语言时,链表是一种经常用到的数据结构。在这里,我将为大家提供一份完整的C++代码示例,以帮助大家在实践中轻松理解如何实现链表。 链表定义 首先,我们需要定义链表数据结构的类。这个类将包含链表节点的定义和初始化方法。 class Node { public: int data; Node* next; Node(int data) : data…

    other 2023年6月27日
    00
合作推广
合作推广
分享本页
返回顶部