Spring Boot之Jar包Linux后台启动部署及滚动日志查看,日志输出至实体文件保存
  HptQjPcX5vAL 2023年12月13日 17 0

在这里插入图片描述


🏆本文收录于《Spring Boot从入门到精通》,专门攻坚指数提升,2023 年国内最系统+最强(更新中)。

本专栏致力打造最硬核Spring Boot 系列教程,从零基础到进阶系列学习内容,🚀均为全网独家首发,打造精品专栏,专栏持续更新中…欢迎大家订阅持续学习。

环境说明:Windows10 + Idea2021.3.2 + Jdk1.8 + SpringBoot 2.3.1.RELEASE

前言

随着互联网的快速发展,Java作为一种广泛应用的编程语言,在互联网开发领域也占有着重要地位。而随着互联网应用的不断增多,部署也变得越来越重要。传统的部署方式,如WAR包部署,往往需要在服务器上安装Tomcat等Web服务器,而这种方式无法快速部署,也无法与Docker等容器技术完美结合。因此,在这里我们推荐使用Spring Boot框架,通过打包成Jar包快速、方便地部署到Linux服务器上。本文将介绍如何将Spring Boot应用打包为Jar包,并在Linux服务器上进行后台启动部署,实现日志的滚动查看和输出至实体文件保存。

摘要

本文主要介绍了Spring Boot框架的使用,在将应用打包成Jar包后,如何在Linux服务器上进行后台启动部署,并实现滚动日志查看和输出至实体文件保存。通过本文的介绍,读者可以熟练掌握Spring Boot框架的使用,并在实际应用中灵活运用。

简介

Spring Boot是由Pivotal公司开发的一款开箱即用的框架,可以快速创建基于Spring的Java应用程序。Spring Boot框架可以通过简单的配置,实现快速、轻量级的应用开发。它内置了大量常用的第三方库和工具,如Tomcat、Logback等,并提供了自动配置的功能,可以减少开发人员的工作量。同时,Spring Boot支持多种部署方式,包括打包成Jar包和War包等。打包成Jar包可以快速地进行部署,满足云计算和容器化等现代化应用的需求。

源代码解析

下面是一个简单的Spring Boot应用的示例代码:

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @RestController
    class HelloWorldController {
        @GetMapping("/")
        public String hello() {
            return "Hello, World!";
        }
    }

}

上述代码定义了一个Spring Boot应用,并在其中定义了一个HelloWorldController,用于处理请求并返回响应。使用Spring Boot框架,可以轻松地搭建一个Web应用,并实现响应式开发。

应用场景案例

Spring Boot适用于各种类型的应用场景,包括Web应用、批处理、消息驱动等。下面以一个Web应用为例进行介绍。

某公司开发了一个在线商城平台,用户可以通过该平台进行购物和支付等操作。为了提高用户的体验和安全性,该公司使用了Spring Boot框架进行开发。具体的应用场景如下:

  1. 用户可以通过Web应用进行注册、登录、浏览商品等操作;
  2. 用户可以在平台上选购商品并进行结算;
  3. 在用户提交订单时,系统需要进行库存检查、支付校验等操作;
  4. 系统需要实现支付宝、微信等第三方支付渠道的接入;
  5. 系统需要实现订单管理、商品管理、用户管理等后台管理功能。

通过使用Spring Boot框架,该公司成功地实现了在线商城平台应用的开发,并在实际使用中获得了较好的用户反馈。

优缺点分析

优点

  1. Spring Boot框架提供了自动配置的功能,可以快速地进行应用开发;
  2. Spring Boot框架内置了很多常用的第三方库和工具,如Tomcat、Logback等,可以减少开发人员的工作量;
  3. Spring Boot框架支持多种部署方式,包括打包成Jar包和War包等,可以满足不同需求;
  4. 打包成Jar包的部署方式可以快速地进行部署,适合云计算和容器化等现代化应用的需求;
  5. Spring Boot框架提供了丰富的文档和社区支持,可以快速解决开发中的问题。

缺点

  1. Spring Boot框架过于自动化,可能会导致开发人员对底层技术的理解不够深入;
  2. 依赖注入的使用可能会导致较大的内存开销;
  3. Spring Boot框架的自动配置可能会导致配置冲突或不可预测的行为。

类代码方法介绍

下面是上述示例代码中的主要类和方法介绍:

Application类

Application类是Spring Boot应用的入口类。该类使用@SpringBootApplication注解进行标注,并实现了main方法,用于启动Spring Boot应用。主要方法如下:

SpringApplication.run方法
public static ConfigurableApplicationContext run(Class<?> primarySource, String... args)

该方法用于启动Spring Boot应用,其中primarySource参数为主配置类,args参数为可选的命令行参数。该方法会返回一个ConfigurableApplicationContext对象,用于管理Spring应用上下文。

HelloWorldController类

HelloWorldController类是一个简单的Controller类,用于处理Web请求并返回响应。主要方法如下:

@RestController注解
@RestController

该注解用于标记HelloWorldController类为一个Controller类,并将其所有方法的返回值转换为JSON格式的响应。

@GetMapping注解
@GetMapping("/")
public String hello() {
    return "Hello, World!";
}

该注解用于标记hello方法为处理HTTP GET请求的方法,并将其映射到Web应用的根路径。hello方法返回一个字符串,用于表示响应内容。

测试用例

下面是一个简单的测试用例,用于测试Spring Boot应用的启动和Web请求的响应:

public class ApplicationTest {

    @Test
    public void testHelloWorld() throws Exception {
        String url = "http://localhost:8080/";
        RestTemplate restTemplate = new RestTemplate();
        ResponseEntity<String> responseEntity = restTemplate.getForEntity(url, String.class);
        assertThat(responseEntity.getStatusCode()).isEqualTo(HttpStatus.OK);
        assertThat(responseEntity.getBody()).isEqualTo("Hello, World!");
    }

}

上述代码使用JUnit框架进行单元测试,测试了Web应用在启动后,能否正确地响应HTTP GET请求并返回"Hello, World!"字符串。

Spring Boot之Jar包Linux后台启动部署及滚动日志查看,日志输出至实体文件保存

打包Jar包

在进行Linux服务器上的启动部署前,需要先将Spring Boot应用打包成Jar包。打包Jar包的方式有很多种,这里我们推荐使用Maven进行打包。打包的步骤如下:

  1. 在项目根目录下创建一个名为pom.xml的Maven配置文件,并添加以下内容:
<project xmlns="http://maven.apache.org/POM/4.0.0" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 
    <modelVersion>4.0.0</modelVersion>
 
    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
 
    <properties>
        <java.version>1.8</java.version>
    </properties>
 
    <dependencies>
        <dependency```xml
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
 
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
 
</project>
  1. 在命令行中进入项目的根目录,并执行以下命令进行打包:
mvn package

执行成功后,将在target目录下生成一个名为demo-0.0.1-SNAPSHOT.jar的可执行Jar包。

Linux服务器上的后台启动部署

  1. 将打包好的Jar包上传至Linux服务器上,并进入Jar包所在目录。

  2. 使用以下命令进行后台启动:

nohup java -jar demo-0.0.1-SNAPSHOT.jar >/dev/null 2>&1 &

nohup命令可以使应用在后台启动,并将输出重定向至/dev/null,避免控制台输出的干扰。

  1. 可以使用以下命令查看应用的运行状态:
ps -ef | grep java

该命令会列出所有正在运行的Java进程,其中包括我们刚刚启动的Spring Boot应用。

  1. 如果需要停止应用,可以使用以下命令:
ps -ef | grep java | grep demo-0.0.1-SNAPSHOT.jar | awk '{print $2}' | xargs kill

该命令会查找正在运行的名为demo-0.0.1-SNAPSHOT.jar的Java进程,并终止其运行。

日志滚动查看及输出至实体文件保存

在进行应用部署和运行过程中,日志的查看和保存也是非常重要的。Spring Boot框架提供了内置的日志系统,可以方便地进行日志输出和管理。

配置日志级别和输出位置

在application.properties文件中可以进行Spring Boot日志的配置。下面是一个示例配置:

# 日志级别
logging.level.root=INFO
logging.level.com.example.demo=DEBUG
 
# 输出位置
logging.file.path=/var/log/demo/
logging.file.name=demo.log

上述配置将日志级别设置为INFO,并将com.example.demo包下的日志级别设置为DEBUG。日志的输出位置为/var/log/demo/目录下,并将日志文件命名为demo.log。

日志滚动查看

在Linux服务器上,可以使用tail命令查看最新的日志输出:

tail -f /var/log/demo/demo.log

该命令可以实时输出日志文件中的最新内容,方便我们进行实时监控和调试。

日志输出至实体文件保存

除了在控制台中进行滚动查看外,我们还可以将日志输出至实体文件进行保存,方便后续的分析和查询。

在Logback框架中,我们可以通过配置appender将日志输出至实体文件。下面是一个示例配置:

<configuration>
 
    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>/var/log/demo/demo.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>/var/log/demo/demo.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%date:%level:%logger:%msg%n</pattern>
        </encoder>
    </appender>
 
    <root level="INFO">
        <appender-ref ref="file" />
    </root>
 
</configuration>

上述配置将日志输出至/var/log/demo/demo.log文件中,并使用TimeBasedRollingPolicy进行日志滚动。具体地,每天生成一个新的日志文件,最多保留30个日志文件。日志的输出格式为%date:%level:%logger:%msg。

通过以上配置,我们可以在Linux服务器上将Spring Boot应用的日志输出至实体文件进行保存,方便后续的查询和分析。

总结

本文介绍了如何将Spring Boot应用打包成Jar包,并在Linux服务器上进行后台启动部署,并实现了日志的滚动查看和输出至实体文件保存。通过本文的介绍,读者可以快速掌握Spring Boot框架的使用,并在实际应用中灵活运用。

附录源码

  如上涉及所有源码均已上传同步在「GitHub」,提供给同学们一对一参考学习,辅助你更迅速的掌握。

☀️建议/推荐你


无论你是计算机专业的学生,还是对编程有兴趣的小伙伴,都建议直接毫无顾忌的学习此专栏「滚雪球学Spring Boot」,从入门到精通,凡是学习此专栏的同学,均能获取到所需的知识和技能,全网最快速入门SpringBoot,就像滚雪球一样,越滚越大,指数级提升。

  最后,如果这篇文章对你有所帮助,帮忙给作者来个一键三连,关注、点赞、收藏,您的支持就是我坚持写作最大的动力。

  同时欢迎大家关注公众号:「猿圈奇妙屋」 ,以便学习更多同类型的技术文章,免费白嫖最新BAT互联网公司面试题、4000G pdf电子书籍、简历模板、技术文章Markdown文档等海量资料。

📣关于我

我是bug菌,CSDN | 掘金 | InfoQ | 51CTO 等社区博客专家,历届博客之星Top30,掘金年度人气作者Top40,51CTO年度博主Top12,华为云 | 阿里云| 腾讯云等社区优质创作者,全网粉丝合计15w+ ;硬核微信公众号「猿圈奇妙屋」,欢迎你的加入!免费白嫖最新BAT互联网公司面试题、4000G pdf电子书籍、简历模板等海量资料。


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月13日 0

暂无评论

推荐阅读
  2Vtxr3XfwhHq   2024年05月17日   53   0   0 Java
  Tnh5bgG19sRf   2024年05月20日   107   0   0 Java
  8s1LUHPryisj   2024年05月17日   46   0   0 Java
  aRSRdgycpgWt   2024年05月17日   47   0   0 Java
HptQjPcX5vAL