日志框架
日志技术概述
日志用来记录程序运行过程中的信息,并可以进行永久存储。
日志技术的优点:
可以将系统执行的信息选择性的记录到指定的位置(控制台、文件中、数据库中)。
可以随时以开关的形式控制是否记录日志,无需修改源代码。
日志技术体系结构
日志规范: 一些接口,提供给日志的现实框架设计的标准。
日志框架: 第三方已经做好的日志记录实现代码,可以直接使用。
LogBack概述
LogBack由log4j创始人设计的另一组开源日志软件,性能强于log4j。
LogBack是基于slf4j的日志规范实现的框架。
技术模块
LogBack主要分为三个技术模块:
- logback-core:logback-core模块为其他两个模块奠定了基础。
- logback-classic:他是log4j的一个改良版本,同时他完整实现了slf4j API。
- logback-access模块与Tomcat和Jetty等Servlet容器集成,以提供HTTP访问日志功能。
LogBack快速入门
//快速搭建logback日志框架 记录程序的执行情况到控制台到文件中
public class Test {
public static final Logger logger=LoggerFactory.getLogger("test.class");
public static void main(String[] args) {
try {
logger.debug("main执行了");
logger.info("开启第二行日志");
int a=10,b=0;
logger.trace("a="+a);
logger.trace("b="+b);
System.out.println(a/b);
} catch (Exception e) {
e.printStackTrace();
logger.error("功能异常"+e);
}
}
}
LogBack配置详解-输出位置、格式设置
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
<property name="LOG_HOME" value="/Users/fangxin/Documents/java"/>
<!--控制台日志, 控制台输出 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度,%msg:日志消息,%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
</appender>
<!--文件日志, 按照每天生成日志文件 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>${LOG_HOME}/TestWeb.log.%d{yyyy-MM-dd}.log</FileNamePattern>
<!--日志文件保留天数-->
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<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>1MB</MaxFileSize>
</triggeringPolicy>
</appender>
<!-- show parameters for hibernate sql 专为 Hibernate 定制 -->
<logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="trace" />
<logger name="org.hibernate.type.descriptor.sql.BasicExtractor" level="DEBUG" />
<logger name="org.hibernate.SQL" level="DEBUG" />
<logger name="org.hibernate.engine.QueryParameters" level="DEBUG" />
<logger name="org.hibernate.engine.query.HQLQueryPlan" level="DEBUG" />
<!--myibatis log configure-->
<logger name="com.apache.ibatis" level="trace"/>
<logger name="java.sql.Connection" level="DEBUG"/>
<logger name="java.sql.Statement" level="DEBUG"/>
<logger name="java.sql.PreparedStatement" level="DEBUG"/>
<!-- 日志输出级别 -->
<root level="ALL">
<!--注意,如果这里不配置关联打印位置,该位置将不会记录日志 -->
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE"/>
</root>
</configuration>
LogBack配置详解-日志级别设置
级别程度依次是:TRACE<DEBUG<INFO<WARN<ERROR;默认级别是debug,对应其方法。
作用: 用于控制系统中哪些日志级别是可以输出的,只输出级别不低于设定级别的日志信息。