Java日志框架(SLF4J+logback/log4j2)
一、日志门面和日志框架
日志门面技术:JCL,SLF4J主要是为了给Java日志访问提供一套标准、规范的API框架。
日志框架技术:JUL,log4j,log4j2,logback主要是为了有效的记录日志信息。
二、SLF4J的使用
简单日志门面(Simple logging Facade For Java) SLF4J主要是为了给Java日志访问提供一套标准、规范的API框架。主要意义在于提供接口,具体的实现可以交由其他日志框架。例如log4j和logback等。当然slf4j自己也提供了功能较为简单的实现,但是一般很少用到。对于一般的java项目而言。日志框架会选择slf4j-api作为门面,配上具体的实现框架(log4j,logback等),中间使用桥接器完成桥接。
三、logback日志框架
springboot默认的日志框架是logback+slf4j
logback配置文件logback.xml
<?xml version=”1.0” encoding=”UTF-8”?>
<contextName>logback</contextName>
<property name="log.path" value="F:\\logback.log" />
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<!-- <filter class="com.example.logback.filter.MyFilter" /> -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
<encoder>
<pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n
</pattern>
</encoder>
</appender>
<!-- 日志文件输出的appender-->
<appender name="file"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log.path}.%d{yyyy-MM-dd}.zip</fileNamePattern>
</rollingPolicy>
<encoder>
<pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n
</pattern>
</encoder>
</appender>
<root level="debug">
<appender-ref ref="console" />
<appender-ref ref="file" />
</root>
<logger name="com.example.logback" level="warn" />
</configuration>
- logback组件之间的关系
1)Logger:日志的记录器,把它关联到应用的对应的context上后,主要用于存放日志对象,也可以定义日志类型、级别
2)Appender:用于指定日志输出的目的地,目的地可以是控制台、文件、数据库等等。
3)Layout:负责吧事件转化成字符串,格式化的日志信息的输出。在logback中Layout对象被封装在encoder中。
还没有评论,来说两句吧...