Spring Boot之logback日志最佳实践

一、Spring Boot日志介绍

  Spring Boot对所有内部日志记录使用了Commons Logging,但是底层日志实现是开放的。为Java Util日志记录、Log4J2和Logback提供了缺省配置。在每种情况下,日志记录器都预先配置为使用控制台输出和可选的文件输出。

  默认情况下,如果使用Spring Boot的“Starters”坐标,则默认使用Logback进行日志记录。还包括适当的Logback路由,以确保使用Java Util日志记录、Commons日志记录、Log4J或SLF4J的依赖库都能正确工作。

  Logback是log4j框架的作者开发的新一代日志框架,它效率更高、能够适应诸多的运行环境,同时天然支持SLF4J。

二、相关maven坐标

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!--starter坐标-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<!--janino-->
<!--若用到了logback的if标签的condition表达式,就需要该坐标-->
<!--否则会抛出该错误:ERROR in ch.qos.logback.core.joran.conditional.IfAction
- Could not find Janino library on the class path. Skipping conditional processing.-->
<dependency>
<groupId>org.codehaus.janino</groupId>
<artifactId>janino</artifactId>
<version>2.6.1</version>
</dependency>

三、引入logback.properties属性文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#日志路径
logback.dir=/Users/zhangboqing/Downloads/logs
#文件名称
logback.all.filename=springboot-base-frame-all
logback.info.filename=springboot-base-frame-info
logback.warn.filename=springboot-base-frame-warn
logback.error.filename=springboot-base-frame-error
#文件的最大数量
logback.maxhistory=10
#文件的最大文件大小
logback.maxfilesize=100MB
#日志级别
logback.level=debug
#日志字符编码
logback.charset=UTF-8
#日志格式
CONSOLE_LOG_PATTERN=%d{yyyy-MM-dd HH:mm:ss.SSS} %boldYellow([%thread]) %highlight(%-5level) %boldGreen(%logger{50}) - %msg%n
FILE_LOG_PATTERN=%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
#控制日志是否在控制台打印,默认打印
ifOpenConsol=true

查看更多

jvm参数

Java 堆内存开关

查看更多
VM 开关 VM 开关描述
1
2
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date releaseTime;

springboot 运行

1
2
3
4
5
6
7
8
# jar方式运行   -D 参数必须在jar前面指定
java -jar -Dserver.port=8081 spring-boot-test-service-0.0.1-SNAPSHOT.jar

# spring-boot plugin 运行
mvn spring-boot:run -Dspring-boot.run.arguments='--spring.profiles.active=pro'

#
mvn spring-boot:run -Dspring-boot.run.profiles=pro

查看更多

spring boot 设计

Spring Boot的核心思想就是约定大于配置

其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置.它默认配置了很多框架的使用方式

多线程并发技术

1.并发编程三要素

原子性原子,即一个不可再被分割的颗粒。在Java中原子性指的是一个或多个操作要么全部执行成功要么全部执行失败。
有序性程序执行的顺序按照代码的先后顺序执行。(处理器可能会对指令进行重排序)
可见性当多个线程访问同一个变量时,如果其中一个线程对其作了修改,其他线程能立即获取到最新的值。

2. 线程的五大状态

  • 创建状态 当用 new 操作符创建一个线程的时候
  • 就绪状态 调用 start 方法,处于就绪状态的线程并不一定马上就会执行 run 方法,还需要等待CPU的调度
  • 运行状态 CPU 开始调度线程,并开始执行 run 方法
查看更多

2019工作日志

战网第三方登录时,请求的参数误写成json格式,当作body传入

应该拼接到url后面

战网第三方登录时,提示“无效的grant_type或无效的回调地址“

在战网管理平台把回调地址与授权地址配置反了

查看更多

自我反思

2022

2022-09-01-

人家吐槽,你也吐槽,你把什么话都往外说,“你们看我头发,来的时候,还是很多的,现在这样了”,我leader说,还是要注意一点,“哈哈哈,我真这样说了
现在想想像个傻屌一样


2021

2021-02-06

之前梁妈问了我嫂子情况,我随口提了几句,今天老妈打电话过来说,你怎么连这个都说了。我顿时很忏愧,傻屌了,是不应该说的

2021-11-13

出远门了一趟,不知道带一些特产 -

2021-11-07

俺姐说,四叔让我过去玩,只是客气,而我当真了,我去,尴尬了

查看更多