logging.pattern.console
控制台输出日志的格式,为了在控制台调试时候显示效果更清晰,为日志增加了颜色。red、green等等
日志格式占位符
配合这张图,看一下占位符和logging.pattern.console
格式配置之间的关系
-
%d{HH:mm:ss.SSS}:日志输出时间(red)
-
%thread:输出日志的进程名字,这在Web应用以及异步任务处理中很有用 (green)
-
%-5level:日志级别,并且使用5个字符靠左对齐 (highlight高亮蓝色)
-
%logger:日志输出类的名字 (boldMagenta粗体洋红色)
-
%msg:日志消息 (cyan蓝绿色)
-
%n:平台的换行符
2.1.需求
一般情况下,使用全局配置文件application.yml或properties进行配置就足够了,如果您的日志输出需求特别复杂,可以考虑使用logback-spring.xml的配置方式。
spring boot 用自带的logback打印日志,多环境打印:
-
生产环境输出到控制台和文件,一天一个文件,保留30天.
-
开发环境输出到控制台和打印sql(mybatis)输出,生产环境不打印这个信息
-
测试环境只输出到控制台。不输出到文件
打印Mybatis SQL,只需要把使用到Mybatis的package的日志级别调整为DEBUG,就可以将SQL打印出来。
2.2.需求实现
因为logback是spring boot的默认日志框架,所以不需要引入maven依赖,直接上logback-spring.xml放在resources下面
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!--引入默认的一些设置-->
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<!--web信息-->
<logger name="org.springframework.web" level="info"/>
<!--写入日志到控制台的appender,用默认的,但是要去掉charset,否则windows下tomcat下乱码-->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
</encoder>
</appender>
<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
<property name="LOG_PATH" value="D:/logs/boot-launch"/>
<!--写入日志到文件的appender-->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志文件输出的文件名,每天一个文件-->
<FileNamePattern>${LOG_PATH}.%d{yyyy-MM-dd}.log</FileNamePattern>
<!--日志文件保留天数-->
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
<!--日志文件最大的大小-->
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>10MB</MaxFileSize>
</triggeringPolicy>
</appender>
<!--异步写日志到文件-->
<appender name="asyncFileAppender" class="ch.qos.logback.classic.AsyncAppender">
<discardingThreshold>0</discardingThreshold>
<queueSize>500</queueSize>
<appender-ref ref="FILE"/>
</appender>
<!--生产环境:打印控制台和输出到文件-->
<springProfile name="prod">
<root level="info">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="asyncFileAppender"/>
</root>
</springProfile>
<!--开发环境:打印控制台-->
<springProfile name="dev">
<!-- 打印sql -->
<logger name="com.zimug.boot.launch" level="DEBUG"/>
<root level="DEBUG">
<appender-ref ref="CONSOLE"/>
</root>
</springProfile>
<!--测试环境:打印控制台-->
<springProfile name="test">
<root level="info">
<appender-ref ref="CONSOLE"/>
</root>
</springProfile>
</configuration>
异步日志配置:
-
异步日志queueSize 默认值256,异步日志队列的容量。
-
discardingThreshold:当异步日志队列的剩余容量小于这个阈值,会丢弃TRACE, DEBUG or INFO级别的日志。如果不希望丢弃日志(即全量保存),那可以设置为0。但是当队列占满后,非阻塞的异步日志会变成阻塞的同步日志。所以在高并发低延迟要求的系统里面针对不重要的日志可以设置discardingThreshold丢弃策略,值大于0。
2.3.测试一下
上面配置完成之后,可以使用如下代码测试一下,是否满足了2.1节中提出的需求。
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@RestController
public class LogTestController {
private static final Logger logger = LoggerFactory.getLogger(LogTestController.class);
@GetMapping("/testlog")
public void test(){
logger.trace("Trace 日志...");
## 结局:总结+分享
看完美团、字节、腾讯这三家的一二三面试问题,是不是感觉问的特别多,可能咱们真的又得开启面试造火箭、工作拧螺丝的模式去准备下一次的面试了。
开篇有提及我可是足足背下了**Java互联网工程师面试1000题**,多少还是有点用的呢,换汤不换药,不管面试官怎么问你,抓住本质即可!能读到此处的都是真爱
* **Java互联网工程师面试1000题**
![image.png](https://img-blog.csdnimg.cn/img_convert/32f8fa6efa4fb3e155369084b896b20c.webp?x-oss-process=image/format,png)
而且从上面三家来看,算法与数据结构是必备不可少的呀,因此我建议大家可以去刷刷这本左程云大佬著作的 《程序员代码面试指南 IT名企算法与数据结构题目最优解》,里面近200道真实出现过的经典代码面试题。
* **程序员代码面试指南--IT名企算法与数据结构题目最优解**
![image.png](https://img-blog.csdnimg.cn/img_convert/85381a08e9f243c282765a83106e8a93.webp?x-oss-process=image/format,png)
* 其余像设计模式,建议可以看看下面这4份PDF(已经整理)
![image.png](https://img-blog.csdnimg.cn/img_convert/3d9c3be7d1f74bebe637934664983949.webp?x-oss-process=image/format,png)
* 更多的Java面试学习笔记如下,关于面试这一块,我额外细分出Java基础-中级-高级开发的面试+解析,以及调优笔记等等等。。。
![image.png](https://img-blog.csdnimg.cn/img_convert/491e5aada80c1d2bfda4c48456653d4a.webp?x-oss-process=image/format,png)
以上所提及的全部Java面试学习的PDF及笔记,如若皆是你所需要的,那么都可发送给你!
H9uh158N-1718867940348)]
* 其余像设计模式,建议可以看看下面这4份PDF(已经整理)
[外链图片转存中...(img-dpJMF2lc-1718867940348)]
* 更多的Java面试学习笔记如下,关于面试这一块,我额外细分出Java基础-中级-高级开发的面试+解析,以及调优笔记等等等。。。
[外链图片转存中...(img-c6wJfaSn-1718867940349)]
以上所提及的全部Java面试学习的PDF及笔记,如若皆是你所需要的,那么都可发送给你!