开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第11天,点击查看活动详情
日志能记录很多东西,如果程序出错了,它会记录下来,写成一个log文件。在这里就介绍java中常用的日志工具。
一.log4j的介绍
log4j是一个非常优秀的开源日志记录工具,它可以控制日志的输出级别,控制日志信息输送的目的地是控制台还是文件等,以及控制每一条日志的输出格式等。
开发项目时,一般配置log4j将错误信息等打印在控制台,当项目上线运行后,就会配置log4j将错误信息记录在日志文件中。
二.SLF4J
SLF4J,简单日志门面主要是为了 Java日志访问提供一套标准、规范的 API 框架,其主要意义在于提供接口,其余的具体实现则交给其他日志框架进行。
SpringBoot默认使用Slf4j+Logback作为日志框架。在Spring Boot项目中,只要添加了 Web 依赖,日志依赖就自动添加进来了。
三.Logback 的复杂配置
在 application.yml 配置文件中只能实现对日志的一些简单配置,如果想实现更 加细粒度的日志配置,就需要使用日志实现的自带配置文件,例如 Logback 的 logback.xml,Log4j 的 log4j.xml 等
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property name="pattern" value="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} %c %M %L [%thread] -------- %m %n"></property>
<!--控制台日志输出的 appender-->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<!--控制输出流对象 默认 System.out 改为 System.err-->
<target>System.err</target>
<!--日志消息格式配置-->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<springProfile name="dev">
<pattern>${pattern}</pattern>
</springProfile>
<springProfile name="pro">
<pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} %c %M %L [%thread] xxxxxxxx %m %n</pattern>
</springProfile>
</encoder>
</appender>
<!--自定义 looger 对象
additivity="false" 自定义 logger 对象是否继承 rootLogger
-->
<logger name="com.example" level="info" additivity="false">
<appender-ref ref="console"/>
</logger>
</configuration>
类似这样配置就能实现复杂的日志配置,也可以输出任何你想要形式的日志。