Logback定义
LOGBack是一个可靠、通用、快速而又灵活的Java日志框架,Logback同样是由log4j创始人设计的一个开源日志组件。
log4j和logback区别
1.相同点
log4j是apache实现的一个开源日志组件,logback同样是由log4j的作者设计完成的。
2.不同点
拥有更好的特性,用来取代log4j的一个日志框架,logback 比所有现有的 logging 系统更快,并且占用的内存空间更小。
Logback组成
Logback建立于三个主要模块:
1.日志记录器(Logger)
Logger:控制要输出哪些日志记录语句,对日志信息进行级别限制。
2.输出端(Appender)
Appender:指定了日志将打印到控制台还是文件中。
常用的Appender有以下2个:
- ConsoleAppender:打印日志信息到控制台,相当于System.out;
- FileAppender:打印日志信息到文件中;
3.日志格式化器(Layout)
Layout:控制日志信息的显示格式,其结构如下所示:
Logback配置使用
Logback配置文件,如下所示:
<?xml version="1.0" encoding="UTF-8"?> <!-- 配置文件修改时重新加载,默认true --> <configuration scan="true"> <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径--> <property name="CATALINA_BASE" value="**/logs"></property> <!-- 控制台输出 --> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder charset="UTF-8"> <!-- 输出日志记录格式 --> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <!-- 第一个文件输出,每天产生一个文件 --> <appender name="FILE1" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 输出文件路径+文件名 --> <fileNamePattern>${CATALINA_BASE}/aa.%d{yyyyMMdd}.log</fileNamePattern> <!-- 保存30天的日志 --> <maxHistory>30</maxHistory> </rollingPolicy> <encoder charset="UTF-8"> <!-- 输出日志记录格式 --> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <!-- 第二个文件输出,每天产生一个文件 --> <appender name="FILE2" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${CATALINA_BASE}/bb.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${CATALINA_BASE}/bb.%d{yyyyMMdd}.log</fileNamePattern> <maxHistory>30</maxHistory> </rollingPolicy> <encoder charset="UTF-8"> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <appender name="CUSTOM" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${CATALINA_BASE}/custom.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- daily rollover --> <fileNamePattern>${CATALINA_BASE}/custom.%d{yyyy-MM-dd}.log</fileNamePattern> <!-- keep 30 days' worth of history --> <maxHistory>30</maxHistory> </rollingPolicy> <encoder charset="UTF-8"> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <!-- 设置日志输出级别 --> <root level="ERROR"> <appender-ref ref="CONSOLE" /> </root> <logger name="file1" level="DEBUG"> <appender-ref ref="FILE1" /> </logger> <logger name="file1" level="INFO"> <appender-ref ref="FILE2" /> </logger> <!-- 自定义logger --> <logger name="custom" level="INFO"> <appender-ref ref="CUSTOM" /> </logger> </configuration>
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》