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

发布于:2025-03-04 ⋅ 阅读:(12) ⋅ 点赞:(0)

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

启动后效果:

​​​​​​​


网站公告

今日签到

点亮在社区的每一天
去签到