【慕课网wiki项目学习笔记01】Spring Boot 项目搭建

news2025/4/24 4:28:30

2-2 新建SpringBoot项目

一、创建SpringBoot项目

(1)在SpringBoot官网创建

(2.1)在 IDEA 中创建

  • Group:公司名

  • Artifact:项目名

创建成功后开始下载Maven依赖(选择右下角的Import Changes)

问题:idea现在只能创建最少jdk17,不能创建java8

https://img1.sycdn.imooc.com/671c889500016dd902750191.jpg

原因:Spring Boot 官方不再支持 Spring Boot 的 2.x 版本了,之后全力维护 3.x;而 Spring Boot 3.x 对 JDK 版本的最低要求是 17!

解决方法:不要用官方提供的 Spring Initializr 来初始化项目了,我们可以使用阿里云提供的脚手架镜像(https://start.aliyun.com/)

(2.2)在 IDEA 中使用阿里云脚手架创建

只需修改Initializer Service URL:

这种方式可能会报错:

(3)使用阿里云脚手架创建

下载下来是一个zip文件,解压后用IDEA打开

二、SpringBoot项目结构

|- wiki:
    # 项目特有文件,提交代码的时候不用提交 
    |- .idea 
    |- wiki.iml
    
    # 如果没有maven的话会根据其中的配置自动下载,但是一般我们都会用自己提前下载好的maven,所以这个目录基本用不到
    |- .mvn 
        |- wrapper 
    |- mvnw        linux命令
    |- mvnw.cmd    windows命令
    
    |- src 所有的源码都写在这个目录下
        |- main
            |- java 所有的java类都写在这个目录下
                |- com.jiawa.wiki
                    |- WikiApplication.java 启动类,需要加@SpringBootApplication注解
            |- resources 配置信息
                |- static 一般用来放前端的css js等,用不到,可以直接删了
                |- templates SpringBoot官方推荐的前端是用Thymeleaf,但我们是前后端分离,用Vue,用不到,可以直接删了
                |- application.properties 配置文件
        |- test 单元测试
    
    |- .gitignore 设置在git提交时忽略的文件
    
    |- HELP.md 就是readme
    
    |- pom.xml 配置maven依赖

三、启动SpringBoot项目

执行WikiApplication.java的main方法:

https://img1.sycdn.imooc.com/szimg/671c850a092e88e511860291.jpg

默认使用SpringBoot自带的Tomcat服务器启动,因此可以直接运行。

https://img1.sycdn.imooc.com/szimg/671c85d109f8704410410083.jpg

 2-3 项目初始配置

一、编码配置

将所有文件的编码改为UTF-8

二、JDK配置

三、Maven配置

(1)IDEA 自带一个maven,其路径为:

E:\Program Files\IntelliJ IDEA 2019.2.3\plugins\maven\lib\maven3

# E:\Program Files\IntelliJ IDEA 2019.2.3 是我的IDEA安装目录

(2)修改maven的配置文件

maven的配置文件的路径为:

E:\Program Files\IntelliJ IDEA 2019.2.3\plugins\maven\lib\maven3\conf\settings.xml

将其修改为下面的内容(配置阿里云镜像):

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0     http://maven.apache.org/xsd/settings-1.0.0.xsd">
    <!--localRepository要修改为自己电脑上的maven仓库的文件目录-->
    <localRepository>C:\Users\甲蛙\.m2\repository</localRepository>

    <pluginGroups>
    </pluginGroups>
    <proxies>
    </proxies>
    <servers>
    </servers>

    <mirrors>
        <mirror>
            <id>alimaven</id>
            <mirrorOf>central</mirrorOf>
            <name>aliyun maven</name>
            <url>http://maven.aliyun.com/nexus/content/repositories/central</url>
        </mirror>

        <mirror>
            <id>alimaven</id>
            <name>aliyun maven</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public</url>
            <mirrorOf>central</mirrorOf>
        </mirror>

        <mirror>
            <id>central</id>
            <name>Maven Repository Switchboard</name>
            <url>http://repo1.maven.org/maven2</url>
            <mirrorOf>central</mirrorOf>
        </mirror>

        <mirror>
            <id>repo2</id>
            <mirrorOf>central</mirrorOf>
            <name>Human Readable Name for this Mirror.</name>
            <url>http://repo2.maven.org/maven2</url>
        </mirror>

        <mirror>
            <id>ibiblio</id>
            <mirrorOf>central</mirrorOf>
            <name>Human Readable Name for this Mirror.</name>
            <url>http://mirrors.ibiblio.org/pub/mirrors/maven2</url>
        </mirror>

        <mirror>
            <id>jboss-public-repository-group</id>
            <mirrorOf>central</mirrorOf>
            <name>JBoss Public Repository Group</name>
            <url>http://repository.jboss.org/nexus/content/groups/public</url>
        </mirror>

        <mirror>
            <id>google-maven-central</id>
            <name>Google Maven Central</name>
            <url>https://maven-central.storage.googleapis.com
            </url>
            <mirrorOf>central</mirrorOf>
        </mirror>

        <!-- 中央仓库在中国的镜像 -->
        <mirror>
            <id>maven.net.cn</id>
            <name>one of the central mirrors in china</name>
            <url>http://maven.net.cn/content/groups/public</url>
            <mirrorOf>central</mirrorOf>
        </mirror>
    </mirrors>

    <profiles>
        <profile>
            <id>jdk-1.8</id>
            <activation>
                <activeByDefault>true</activeByDefault>
                <jdk>1.8</jdk>
            </activation>
            <properties>
                <maven.compiler.source>1.8</maven.compiler.source>
                <maven.compiler.target>1.8</maven.compiler.target>
                <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
            </properties>
        </profile>
        <profile>
            <id>repository_set</id>
            <repositories>
                <repository>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                    <id>public</id>
                    <name>Public Repository</name>
                    <url>http://maven.aliyun.com/nexus/content/groups/public</url>
                </repository>
            </repositories>
            <pluginRepositories>
                <pluginRepository>
                    <releases>
                        <updatePolicy>never</updatePolicy>
                    </releases>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                    <id>public</id>
                    <name>Public Repository</name>
                    <url>http://maven.aliyun.com/nexus/content/groups/public</url>
                </pluginRepository>
            </pluginRepositories>
        </profile>

    </profiles>

</settings>

四、Git配置

(1)启用版本控制

(2)文件名的颜色表示该文件是否被Git管理

  • 红色:还没交给Git管理

  • 绿色:Git已管理,还未提交

  • 蓝色:作过修改,还未提交

  • 灰色:文件删除,还未提交(撤销删除操作,右键 -> Revert)

  • 黑色:已经提交的文件

(3)第一次提交

将还没交给Git管理的文件都交给Git管理(git add)

将已被Git管理,还未提交的文件进行提交(git commit)

(4)可以通过.gitignore来忽略文件,本地工作空间相关的文件不要提交,比如:.idea, target, *.iml

如果不是代码的问题,是本地项目配置的问题,有一个超级好用的大招:

  • 关闭项目

  • 删除根目录下的.idea文件夹(这个文件里面放的都是项目的配置信息)

  • 重新打开项目

2-4 代码关联远程仓库

访问远程仓库需要身份验证,SSH密钥可以提供一种安全的身份验证机制,使得开发者可以无需每次都输入用户名和密码就能访问远程Git仓库。我们需要先在本地计算机上生成一对私钥和公钥,然后再将公钥添加到Gitee、GitHub或GitLab等平台上的账户设置中。

(1)获取SSH公钥

方式一:Git GUI

方式二:命令行

在git-bash中输入:

ssh-keygen -t rsa -C "自己注册码云时的邮箱"
# 之后提示需要输入的信息都按回车键(使用默认选项)

看到如下界面则就表示操作成功了:

https://img1.sycdn.imooc.com/szimg/5fd59d6709b9c20f10120689.jpg

SSH公钥文件路径:C:\Users\你的用户名\.ssh\id_rsa.pub

(2)在代码托管平台中添加SSH公钥

以码云Gitee为例

https://img1.sycdn.imooc.com/szimg/a23f486709b9c65414000920.jpg

(3)在代码托管平台中新建一个仓库

https://img1.sycdn.imooc.com/szimg/b1cffa6709b9c7cc14060892.jpg

(4)将本地仓库与远程仓库进行关联

创建好仓库以后会出现一个代码提示页面:

  • 第一个红色框就是在使用SSH访问远程仓库时的远程仓库的地址,之后我们在使用git remote命令添加远程仓库时,会给这个地址起一个别名(比如origin),这样在之后需要用到这个地址时就不用输入这么一串了。

  • 如果本地还没有创建仓库,就执行 “创建 git 仓库” 部分的指令

  • 如果已经有一个本地仓库了,就执行 “已有仓库?” 部分的指令

Step1: 使用git remote命令添加远程仓库

# 这行代码的意思是添加一个远程仓库git@gitee.com:ZhuYuxi200019/jiawa_wiki.git,并给它起名为origin,以后就用origin来指代这个远程仓库
$ git remote add origin git@gitee.com:ZhuYuxi200019/jiawa_wiki.git

# 查看已添加的远程仓库
$ git remote -v

Step2: 使用git push命令将本地代码提交到远程仓库

$ git push -u origin "master"

Enumerating objects: 26, done.
Counting objects: 100% (26/26), done.
Delta compression using up to 12 threads
Compressing objects: 100% (17/17), done.
Writing objects: 100% (26/26), 3.87 KiB | 991.00 KiB/s, done.
Total 26 (delta 2), reused 0 (delta 0)
remote: Powered by GITEE.COM [1.1.5]
remote: Set trace flag b045baaa
To gitee.com:ZhuYuxi200019/jiawa_wiki.git
 * [new branch]      master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.

之后如果要从远程仓库下载代码就用git clone命令

$ git clone git@gitee.com:ZhuYuxi200019/jiawa_wiki.git

2-5 启动日志优化

默认日志样式:

"E:\Program Files\Java\jdk1.8.0_221\bin\java.exe" -XX:TieredStopAtLevel=1 -noverify -Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote -Dspring.jmx.enabled=true -Dspring.liveBeansView.mbeanDomain -Dspring.application.admin.enabled=true "-javaagent:E:\Program Files\IntelliJ IDEA 2019.2.3\lib\idea_rt.jar=57470:E:\Program Files\IntelliJ IDEA 2019.2.3\bin" -Dfile.encoding=UTF-8 -classpath "E:\Program Files\Java\jdk1.8.0_221\jre\lib\charsets.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\deploy.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\access-bridge-64.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\cldrdata.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\dnsns.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\jaccess.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\jfxrt.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\localedata.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\nashorn.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\sunec.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\sunjce_provider.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\sunmscapi.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\sunpkcs11.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\zipfs.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\javaws.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\jce.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\jfr.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\jfxswt.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\jsse.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\management-agent.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\plugin.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\resources.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\rt.jar;E:\zhuyuxi333\IdeaProjects\wiki\target\classes;E:\Program Files\MavenRepository\org\springframework\boot\spring-boot-starter-web\2.4.2\spring-boot-starter-web-2.4.2.jar;E:\Program Files\MavenRepository\org\springframework\boot\spring-boot-starter\2.4.2\spring-boot-starter-2.4.2.jar;E:\Program Files\MavenRepository\org\springframework\boot\spring-boot\2.4.2\spring-boot-2.4.2.jar;E:\Program Files\MavenRepository\org\springframework\boot\spring-boot-autoconfigure\2.4.2\spring-boot-autoconfigure-2.4.2.jar;E:\Program Files\MavenRepository\org\springframework\boot\spring-boot-starter-logging\2.4.2\spring-boot-starter-logging-2.4.2.jar;E:\Program Files\MavenRepository\ch\qos\logback\logback-classic\1.2.3\logback-classic-1.2.3.jar;E:\Program Files\MavenRepository\ch\qos\logback\logback-core\1.2.3\logback-core-1.2.3.jar;E:\Program Files\MavenRepository\org\apache\logging\log4j\log4j-to-slf4j\2.13.3\log4j-to-slf4j-2.13.3.jar;E:\Program Files\MavenRepository\org\apache\logging\log4j\log4j-api\2.13.3\log4j-api-2.13.3.jar;E:\Program Files\MavenRepository\org\slf4j\jul-to-slf4j\1.7.30\jul-to-slf4j-1.7.30.jar;E:\Program Files\MavenRepository\jakarta\annotation\jakarta.annotation-api\1.3.5\jakarta.annotation-api-1.3.5.jar;E:\Program Files\MavenRepository\org\yaml\snakeyaml\1.27\snakeyaml-1.27.jar;E:\Program Files\MavenRepository\org\springframework\boot\spring-boot-starter-json\2.4.2\spring-boot-starter-json-2.4.2.jar;E:\Program Files\MavenRepository\com\fasterxml\jackson\core\jackson-databind\2.11.4\jackson-databind-2.11.4.jar;E:\Program Files\MavenRepository\com\fasterxml\jackson\core\jackson-annotations\2.11.4\jackson-annotations-2.11.4.jar;E:\Program Files\MavenRepository\com\fasterxml\jackson\core\jackson-core\2.11.4\jackson-core-2.11.4.jar;E:\Program Files\MavenRepository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.11.4\jackson-datatype-jdk8-2.11.4.jar;E:\Program Files\MavenRepository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.11.4\jackson-datatype-jsr310-2.11.4.jar;E:\Program Files\MavenRepository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.11.4\jackson-module-parameter-names-2.11.4.jar;E:\Program Files\MavenRepository\org\springframework\boot\spring-boot-starter-tomcat\2.4.2\spring-boot-starter-tomcat-2.4.2.jar;E:\Program Files\MavenRepository\org\apache\tomcat\embed\tomcat-embed-core\9.0.41\tomcat-embed-core-9.0.41.jar;E:\Program Files\MavenRepository\org\glassfish\jakarta.el\3.0.3\jakarta.el-3.0.3.jar;E:\Program Files\MavenRepository\org\apache\tomcat\embed\tomcat-embed-websocket\9.0.41\tomcat-embed-websocket-9.0.41.jar;E:\Program Files\MavenRepository\org\springframework\spring-web\5.3.3\spring-web-5.3.3.jar;E:\Program Files\MavenRepository\org\springframework\spring-beans\5.3.3\spring-beans-5.3.3.jar;E:\Program Files\MavenRepository\org\springframework\spring-webmvc\5.3.3\spring-webmvc-5.3.3.jar;E:\Program Files\MavenRepository\org\springframework\spring-aop\5.3.3\spring-aop-5.3.3.jar;E:\Program Files\MavenRepository\org\springframework\spring-context\5.3.3\spring-context-5.3.3.jar;E:\Program Files\MavenRepository\org\springframework\spring-expression\5.3.3\spring-expression-5.3.3.jar;E:\Program Files\MavenRepository\org\slf4j\slf4j-api\1.7.30\slf4j-api-1.7.30.jar;E:\Program Files\MavenRepository\org\springframework\spring-core\5.3.3\spring-core-5.3.3.jar;E:\Program Files\MavenRepository\org\springframework\spring-jcl\5.3.3\spring-jcl-5.3.3.jar" com.zhuyuxi333.wiki.WikiApplication

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v2.4.2)

2025-03-02 16:35:14.399  INFO 6024 --- [           main] com.zhuyuxi333.wiki.WikiApplication      : Starting WikiApplication using Java 1.8.0_221 on DESKTOP-1H3OOAD with PID 6024 (E:\zhuyuxi333\IdeaProjects\wiki\target\classes started by zxx in E:\zhuyuxi333\IdeaProjects\wiki)
2025-03-02 16:35:14.412  INFO 6024 --- [           main] com.zhuyuxi333.wiki.WikiApplication      : No active profile set, falling back to default profiles: default
2025-03-02 16:35:15.345  INFO 6024 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
2025-03-02 16:35:15.371  INFO 6024 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2025-03-02 16:35:15.371  INFO 6024 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.41]
2025-03-02 16:35:15.506  INFO 6024 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2025-03-02 16:35:15.506  INFO 6024 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 983 ms
2025-03-02 16:35:15.651  INFO 6024 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2025-03-02 16:35:15.712  INFO 6024 --- [           main] o.s.b.a.w.s.WelcomePageHandlerMapping    : Adding welcome page: class path resource [static/index.html]
2025-03-02 16:35:15.792  INFO 6024 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2025-03-02 16:35:15.807  INFO 6024 --- [           main] com.zhuyuxi333.wiki.WikiApplication      : Started WikiApplication in 2.094 seconds (JVM running for 4.624)

(1)修改logback日志样式

logback-spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!-- 如果是Mac,要将路径修改为.\log -->
    <property name="PATH" value="./log"></property>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <!-- 这一行原始的内容为: -->
            <!-- <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %highlight(%-5level) %blue(%-50logger{50}:%-4line) %thread %msg%n</Pattern>-->
            <Pattern>%d{ss.SSS} %highlight(%-5level) %blue(%-30logger{30}:%-4line) %thread %msg%n</Pattern>
        </encoder>
    </appender>

    <appender name="TRACE_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${PATH}/trace.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>${PATH}/trace.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <layout>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %-50logger{50}:%-4line %green(%-18X{LOG_ID}) %msg%n</pattern>
        </layout>
    </appender>

    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${PATH}/error.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>${PATH}/error.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <layout>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %-50logger{50}:%-4line %green(%-18X{LOG_ID}) %msg%n</pattern>
        </layout>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <root level="ERROR">
        <appender-ref ref="ERROR_FILE" />
    </root>

    <root level="TRACE">
        <appender-ref ref="TRACE_FILE" />
    </root>

    <root level="INFO">
        <appender-ref ref="STDOUT" />
    </root>
</configuration>

定义日志样式的代码

<Pattern>%d{ss.SSS} %highlight(%-5level) %blue(%-30logger{30}:%-4line) %thread %msg%n</Pattern>
  • <Pattern> 标签用于指定日志信息的输出格式

  • %d{ss.SSS}

    • %d 是日期时间转换符,用于输出日志事件发生的时间。

    • {ss.SSS} 是日期时间的格式说明。ss 表示秒,SSS 表示毫秒,所以这个格式会输出日志事件发生时的秒和毫秒部分,例如 05.123

  • %highlight(%-5level)

    • %level 是日志级别转换符,用于输出日志事件的级别(如 DEBUGINFOWARNERROR 等)。

    • %-5level 中的 - 表示左对齐,5 表示输出的宽度为 5 个字符。如果日志级别名称长度小于 5 个字符,会在右侧填充空格。

    • %highlight(...) 是 Logback 提供的一个高亮转换符,用于对包裹的内容进行高亮显示,具体的高亮效果取决于日志输出的终端支持情况。

  • %blue(%-30logger{30}:%-4line)

    • %logger 是日志记录器名称转换符,用于输出记录日志的 Logger 名称。

    • {30} 表示只取 Logger 名称的最后 30 个字符。

    • %-30logger{30} 中的 - 表示左对齐,30 表示输出的宽度为 30 个字符。如果 Logger 名称长度小于 30 个字符,会在右侧填充空格。

    • %line 是行号转换符,用于输出记录日志的代码行号。

    • %-4line 中的 - 表示左对齐,4 表示输出的宽度为 4 个字符。如果行号长度小于 4 个字符,会在右侧填充空格。

    • %blue(...) 是 Logback 提供的一个颜色转换符,用于将包裹的内容以蓝色显示,具体的颜色效果取决于日志输出的终端支持情况。

  • %thread

    • %thread 是线程名转换符,用于输出产生日志事件的线程名称

  • %msg

    • %msg 是日志消息转换符,用于输出日志记录时传递的消息内容。

  • %n

    • %n 是换行符转换符,用于在每条日志记录的末尾添加一个换行符,使每条日志记录单独占一行。

修改后的日志样式:

"E:\Program Files\Java\jdk1.8.0_221\bin\java.exe" -XX:TieredStopAtLevel=1 -noverify -Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote -Dspring.jmx.enabled=true -Dspring.liveBeansView.mbeanDomain -Dspring.application.admin.enabled=true "-javaagent:E:\Program Files\IntelliJ IDEA 2019.2.3\lib\idea_rt.jar=57587:E:\Program Files\IntelliJ IDEA 2019.2.3\bin" -Dfile.encoding=UTF-8 -classpath "E:\Program Files\Java\jdk1.8.0_221\jre\lib\charsets.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\deploy.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\access-bridge-64.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\cldrdata.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\dnsns.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\jaccess.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\jfxrt.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\localedata.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\nashorn.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\sunec.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\sunjce_provider.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\sunmscapi.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\sunpkcs11.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\ext\zipfs.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\javaws.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\jce.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\jfr.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\jfxswt.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\jsse.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\management-agent.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\plugin.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\resources.jar;E:\Program Files\Java\jdk1.8.0_221\jre\lib\rt.jar;E:\zhuyuxi333\IdeaProjects\wiki\target\classes;E:\Program Files\MavenRepository\org\springframework\boot\spring-boot-starter-web\2.4.2\spring-boot-starter-web-2.4.2.jar;E:\Program Files\MavenRepository\org\springframework\boot\spring-boot-starter\2.4.2\spring-boot-starter-2.4.2.jar;E:\Program Files\MavenRepository\org\springframework\boot\spring-boot\2.4.2\spring-boot-2.4.2.jar;E:\Program Files\MavenRepository\org\springframework\boot\spring-boot-autoconfigure\2.4.2\spring-boot-autoconfigure-2.4.2.jar;E:\Program Files\MavenRepository\org\springframework\boot\spring-boot-starter-logging\2.4.2\spring-boot-starter-logging-2.4.2.jar;E:\Program Files\MavenRepository\ch\qos\logback\logback-classic\1.2.3\logback-classic-1.2.3.jar;E:\Program Files\MavenRepository\ch\qos\logback\logback-core\1.2.3\logback-core-1.2.3.jar;E:\Program Files\MavenRepository\org\apache\logging\log4j\log4j-to-slf4j\2.13.3\log4j-to-slf4j-2.13.3.jar;E:\Program Files\MavenRepository\org\apache\logging\log4j\log4j-api\2.13.3\log4j-api-2.13.3.jar;E:\Program Files\MavenRepository\org\slf4j\jul-to-slf4j\1.7.30\jul-to-slf4j-1.7.30.jar;E:\Program Files\MavenRepository\jakarta\annotation\jakarta.annotation-api\1.3.5\jakarta.annotation-api-1.3.5.jar;E:\Program Files\MavenRepository\org\yaml\snakeyaml\1.27\snakeyaml-1.27.jar;E:\Program Files\MavenRepository\org\springframework\boot\spring-boot-starter-json\2.4.2\spring-boot-starter-json-2.4.2.jar;E:\Program Files\MavenRepository\com\fasterxml\jackson\core\jackson-databind\2.11.4\jackson-databind-2.11.4.jar;E:\Program Files\MavenRepository\com\fasterxml\jackson\core\jackson-annotations\2.11.4\jackson-annotations-2.11.4.jar;E:\Program Files\MavenRepository\com\fasterxml\jackson\core\jackson-core\2.11.4\jackson-core-2.11.4.jar;E:\Program Files\MavenRepository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.11.4\jackson-datatype-jdk8-2.11.4.jar;E:\Program Files\MavenRepository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.11.4\jackson-datatype-jsr310-2.11.4.jar;E:\Program Files\MavenRepository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.11.4\jackson-module-parameter-names-2.11.4.jar;E:\Program Files\MavenRepository\org\springframework\boot\spring-boot-starter-tomcat\2.4.2\spring-boot-starter-tomcat-2.4.2.jar;E:\Program Files\MavenRepository\org\apache\tomcat\embed\tomcat-embed-core\9.0.41\tomcat-embed-core-9.0.41.jar;E:\Program Files\MavenRepository\org\glassfish\jakarta.el\3.0.3\jakarta.el-3.0.3.jar;E:\Program Files\MavenRepository\org\apache\tomcat\embed\tomcat-embed-websocket\9.0.41\tomcat-embed-websocket-9.0.41.jar;E:\Program Files\MavenRepository\org\springframework\spring-web\5.3.3\spring-web-5.3.3.jar;E:\Program Files\MavenRepository\org\springframework\spring-beans\5.3.3\spring-beans-5.3.3.jar;E:\Program Files\MavenRepository\org\springframework\spring-webmvc\5.3.3\spring-webmvc-5.3.3.jar;E:\Program Files\MavenRepository\org\springframework\spring-aop\5.3.3\spring-aop-5.3.3.jar;E:\Program Files\MavenRepository\org\springframework\spring-context\5.3.3\spring-context-5.3.3.jar;E:\Program Files\MavenRepository\org\springframework\spring-expression\5.3.3\spring-expression-5.3.3.jar;E:\Program Files\MavenRepository\org\slf4j\slf4j-api\1.7.30\slf4j-api-1.7.30.jar;E:\Program Files\MavenRepository\org\springframework\spring-core\5.3.3\spring-core-5.3.3.jar;E:\Program Files\MavenRepository\org\springframework\spring-jcl\5.3.3\spring-jcl-5.3.3.jar" com.zhuyuxi333.wiki.WikiApplication

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v2.4.2)

56.800 INFO  c.z.wiki.WikiApplication      :55   main Starting WikiApplication using Java 1.8.0_221 on DESKTOP-1H3OOAD with PID 4040 (E:\zhuyuxi333\IdeaProjects\wiki\target\classes started by zxx in E:\zhuyuxi333\IdeaProjects\wiki)
56.803 INFO  c.z.wiki.WikiApplication      :660  main No active profile set, falling back to default profiles: default
57.290 INFO  o.s.b.w.e.t.TomcatWebServer   :108  main Tomcat initialized with port(s): 8080 (http)
57.296 INFO  o.a.c.http11.Http11NioProtocol:173  main Initializing ProtocolHandler ["http-nio-8080"]
57.297 INFO  o.a.c.core.StandardService    :173  main Starting service [Tomcat]
57.297 INFO  o.a.c.core.StandardEngine     :173  main Starting Servlet engine: [Apache Tomcat/9.0.41]
57.348 INFO  o.a.c.c.C.[.[localhost].[/]   :173  main Initializing Spring embedded WebApplicationContext
57.348 INFO  o.s.b.w.s.c.ServletWebServerApplicationContext:289  main Root WebApplicationContext: initialization completed in 517 ms
57.453 INFO  o.s.s.c.ThreadPoolTaskExecutor:181  main Initializing ExecutorService 'applicationTaskExecutor'
57.492 INFO  o.s.b.a.w.s.WelcomePageHandlerMapping:53   main Adding welcome page: class path resource [static/index.html]
57.541 INFO  o.a.c.http11.Http11NioProtocol:173  main Starting ProtocolHandler ["http-nio-8080"]
57.555 INFO  o.s.b.w.e.t.TomcatWebServer   :220  main Tomcat started on port(s): 8080 (http) with context path ''
57.561 INFO  c.z.wiki.WikiApplication      :61   main Started WikiApplication in 1.192 seconds (JVM running for 1.706)

设置日志输出位置

<configuration>
    <!-- 日志目录 -->
    <property name="PATH" value="./log"></property>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        ...
    </appender>

    <appender name="TRACE_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- TRACE日志输出文件 -->
        <file>${PATH}/trace.log</file>
        ...
    </appender>

    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- ERROR日志输出文件 -->
        <file>${PATH}/error.log</file>
        ...
    </appender>

    <root level="ERROR">
        <appender-ref ref="ERROR_FILE" />
    </root>

    <root level="TRACE">
        <appender-ref ref="TRACE_FILE" />
    </root>

    <root level="INFO">
        <!-- INFO日志输出到控制台 -->
        <appender-ref ref="STDOUT" />
    </root>
</configuration>

设置Git忽略日志输出目录

(2)增加启动成功文案

WikiApplication.java:

package com.zhuyuxi333.wiki;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.core.env.Environment;

@SpringBootApplication
public class WikiApplication {

    private static final Logger LOG = LoggerFactory.getLogger(WikiApplication.class);

    public static void main(String[] args) {
        SpringApplication app = new SpringApplication(WikiApplication.class);

        // 增加启动成功日志
        Environment env = app.run(args).getEnvironment();
        LOG.info("启动成功!!");
        LOG.info("地址:\thttp://127/0.0.1:{}", env.getProperty("server.port"));
    }

}

通过 env.getProperty(...) 可以获取 application.properties 中的应用配置信息。

启动后效果:

(3)修改启动图案

在resources目录下增加一个banner.txt文件:


  _______        __     __         _ ____ ____ ____
 |___  / |       \ \   / /        (_)___ \___ \___ \
    / /| |__  _   \ \_/ /   ___  ___  __) |__) |__) |
   / / | '_ \| | | \   / | | \ \/ / ||__ <|__ <|__ <
  / /__| | | | |_| || || |_| |>  <| |___) |__) |__) |
 /_____|_| |_|\__,_||_| \__,_/_/\_\_|____/____/____/

生成字符图案的网站:http://patorjk.com/software/taag

启动后效果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2311292.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【高分论文密码】AI大模型和R语言的全类型科研图形绘制,从画图、标注、改图、美化、组合、排序分解科研绘图每个步骤

在科研成果竞争日益激烈的当下&#xff0c;「一图胜千言」已成为高水平SCI期刊的硬性门槛——数据显示很多情况的拒稿与图表质量直接相关。科研人员普遍面临的工具效率低、设计规范缺失、多维数据呈现难等痛点&#xff0c;因此科研绘图已成为成果撰写中的至关重要的一个环节&am…

vue3-pc-template后台管理之角色管理与功能权限配置实践

在开发企业级应用时&#xff0c;权限控制无疑是至关重要且不可或缺的一部分。合理的权限控制不仅能够有效保障系统的安全性&#xff0c;还能确保不同用户角色在系统中拥有合适的操作权限&#xff0c;从而提高系统的使用效率和稳定性。本文将详细介绍如何在 Vue3 项目中实现功能…

Android Flow 示例

在Android开发的世界里&#xff0c;处理异步数据流一直是一个挑战。随着Kotlin的流行&#xff0c;Flow作为Kotlin协程库的一部分&#xff0c;为开发者提供了一种全新的方式来处理这些问题。今天&#xff0c;我将深入探讨Flow的设计理念&#xff0c;并通过具体的例子展示如何在实…

前端文件加载耗时过长解决方案

从你的 Network (网络) 面板 看到&#xff0c;许多 JS 文件的加载时间较长&#xff08;1~2秒&#xff09;&#xff0c;可能的原因如下&#xff1a; ✅ 可能的原因 1. 过多的 JS 请求&#xff08;多个小文件加载&#xff09; 你当前页面加载了很多小 JS 文件&#xff08;addSi…

Visual Studio 2022新建c语言项目的详细步骤

步骤1&#xff1a;点击创建新项目 步骤2&#xff1a;到了项目模板 --> 选择“控制台应用” (在window终端运行代码。默认打印"Hello World") --> 点击 “下一步” 步骤3&#xff1a;到了配置新项目模块 --> 输入“项目名称” --> 更改“位置”路径&…

物联网系统搭建

实验项目名称 构建物联网系统 实验目的 掌握物联网系统的一般构建方法。 实验要求&#xff1a; 1&#xff0e;构建物联网系统&#xff0c;实现前后端的交互。 实验内容&#xff1a; CS模式MQTT&#xff08;不带数据分析处理功能&#xff09; 实现智能设备与应用客户端的交…

PostgreSQL中的事务隔离

1. 事务隔离的概念 在数据库管理系统中&#xff0c;事务隔离是一项重要的功能&#xff0c;它能确保在并发访问数据库时事务之间能够独立运行&#xff0c;不会相互干扰。数据库系统通常支持不同级别的事务隔离&#xff0c;用来满足不同应用程序之间的需求。 2. 事务隔离的种类…

Android15请求动态申请存储权限完整示例

效果: 1.修改AndroidManifest.xml增加如下内容: <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-perm

unity学习62,尝试做第一个小游戏项目:flappy bird

目录 学习参考 1 创建1个unity 2D项目 1.1 2D项目模板选择 1.1.1 2D(built-in-Render pipeline) 1.1.2 universe 2D 1.1.3 这次选择 2D(built-in-Render pipeline) 1.2 创建项目 1.2.1 注意点 1.2.2 如果想修改项目名 2 导入美术资源包 2.1 下载一个flappy bird的…

【STM32F103ZET6——库函数】11.捕获红外信号

目录 红外原理 数据码 引导码 连发码 配置捕获引脚 使能引脚时钟 配置定时器 使能定时器时钟 配置输入捕获 中断优先级分组 配置定时器4中断 定时器中断使能 使能定时器 重写定时器中断服务函数 清空定时器中断标志位 例程 例程说明 main.h main.c HongWai…

unity调用本地部署deepseek全流程

unity调用本地部署deepseek全流程 deepseek本地部署 安装Ollama 搜索并打开Ollama官网[Ollama](https://ollama.com/download) 点击Download下载对应版本 下载后点击直接安装 安装deepseek大语言模型 官网选择Models 选择deepseek-r1&#xff0c;选择对应的模型&#xff0…

AI绘画软件Stable Diffusion详解教程(6):文生图、提示词细说与绘图案例

文生图即以文字描述来生成图像&#xff0c;这是目前所有AI绘画软件的基本功能之一。要想画一副好的图片&#xff0c;除了选择好的模型&#xff0c;在文生图中&#xff0c;提示词特别关键。 一、什么是提示词&#xff08;Prompt&#xff09; 提示词又称创意、关键词、咒语、ca…

SAP监控体系和机制

SAP监控体系 SAP监控体系是一个多层次、多维度的综合系统&#xff0c;旨在确保SAP系统的性能、可用性、安全性和稳定性。以下是SAP监控体系的主要组成部分&#xff1a; 1. 技术监控&#xff08;Technical Monitoring&#xff09; 目标&#xff1a;监控SAP系统的基础设施和技术…

SLAM评估工具安装及使用EVO(Ubuntu20.04安装evo)--缺少 onnx 库还有Pandas 版本不兼容解决

介绍一下我的是ubuntu20.04.机载电脑是orinnx&#xff0c;通过源码烧写的系统。 首先打开终端&#xff0c;输入 pip install evo --upgrade --no-binary evo 安装过程中出现如下问题 缺少 onnx 库还有Pandas 版本不兼容&#xff0c; ONNX&#xff08;Open Neural Network E…

【YashanDB认证】yashandb23.3.1 个人版单机部署安装实践

YCA报名链接如下: YashanDB|崖山数据库系统YashanDB学习中心-YCA认证详情 目前免费 主要参考文档&#xff1a; 单机&#xff08;主备&#xff09;部署 | YashanDB Doc 另外还参考摩天轮文章&#xff1a; YashanDB 23.2.9.101 企业版安装步骤抢先看&#xff01; - 墨天轮 …

ProfibusDP主站转ModbusTCP网关如何进行数据互换

ProfibusDP主站转ModbusTCP网关如何进行数据互换 在现代工业自动化领域&#xff0c;通信协议的多样性和复杂性不断增加。Profibus DP作为一种经典的现场总线标准&#xff0c;广泛应用于工业控制网络中&#xff1b;而Modbus TCP作为基于以太网的通信协议&#xff0c;因其简单易…

正点原子[第三期]Arm(iMX6U)Linux移植学习笔记-2.1 uboot简介

前言&#xff1a; 本文是根据哔哩哔哩网站上“Arm(iMX6U)Linux系统移植和根文件系统构键篇”视频的学习笔记&#xff0c;在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。 引用&#xff1a; …

Qt 实现绘图板(支持橡皮擦与 Ctrl+Z 撤销功能)[特殊字符]

作业&#xff1a; 1&#xff1a;实现绘图的时候&#xff0c;颜色的随时调整 2&#xff1a;追加橡皮擦功能 3&#xff1a;配合键盘事件&#xff0c;实现功能 当键盘按 ctrlz的时候&#xff0c;撤销最后一次绘图 头文件.h #ifndef WIDGET_H #define WIDGET_H#include <QWidge…

基于STM32的智能家居蓝牙系统(论文+源码)

1总体方案设计 本次基于STM32的智能家居蓝牙系统&#xff0c;其系统总体架构如图2.1所示&#xff0c;采用STM32f103单片机作为控制器&#xff0c;通过DHT11传感器实现温湿度检测&#xff0c;MQ-2烟雾传感器实现烟雾检测&#xff0c;光敏电阻实现光照检测&#xff0c;同时将数据…

el-table一格两行;概率;find

样式&#xff1a; 根据概率表头关键代码&#xff1a;rateRanges&#xff1b; scope.row.targetHitTable.find((target:any) > target.targetHitRate > range.min && target.targetHitRate < range.max)!.targetHitNum &#xff08;1&#xff09;!.是TypeScri…